问题说明:读和写所有压力都由一台数据库承担,压力大,数据库服务器磁盘损坏则数据丢失,单点故障
写操作——insert、update、delete——》Master主库——数据同步——》Slave从库《——读操作——
Mysql主从复制
Mysql主从复制
Mysql主从复制是一个异步复制的过程,底层是基于Mysql自带的二进制日志功能。就是一台或多台Mysql数据库(slave,即从库)从另一台Mysql数据库(master,即主库)进行日志的复制然后再解析日志并应用到自身,最终实现从库的数据和主库的数据保持一致。Mysql主从复制是Mysql数据库自带功能,无需借助第三方工具。
Mysql主从复制过程分为三步:
* master将改变记录到二进制日志(binary log)
* slave将master的binary log拷贝到它的中继日志(relay log)
* slave重做中继日志中的事件,将改变应用到自己的数据库中
两个虚拟机各自安装mysql,其中一台用作主库(Master),一台用作从库(Slave);
配置-主库Master:
第一步:修改Mysql数据库的配置文件/etc/my.cnf
[mysqld]
log-bin=mysql-bin #[必须]启用二进制文件
server-id=100 #[必须]服务器唯一ID
第二步:重启Mysql服务
systemctl restart mysqld
第三步:登录Mysql数据库,执行下面SQL
GRANT REPLICATION SLAVE ON *.* to 'xiaoming'@'%' identified by 'Root@123456'
注:上面SQL的作用是创建一个用户xiaoming,密码为Root@123456,并且给xiaoming用户授予REPLICATION SLAVE权限。常用于建立复制时所需要用到的用户权限,也就是slave必须被master授权具有该权限的用户,才能通过该用户复制。
第四步:登录Mysql数据库,执行下面的SQL,记录下结果中File和Position的值
show master status; 查看Master的状态,执行完此SQL后不要再执行任何操作
配置-从库Slave
第一步:修改Mysql数据库的配置文件/etc/my.cnf
[mysqld]
server-id=101 #[必须]服务器唯一ID
第二步:重启mysql服务
systemctl restart mysqld
第三步:登录Mysql数据库,执行下面SQL
change master to
master_host = '主库ip', master_user='xiaoming',master_password='Root@123456',master_log_file='mysql-bin.000001',master_log_pos=439;
start slave;
[master_log_file和master_log_pos为主库执行show master status查询的结果]
show slave status\G 查看数据库状态。
测试主从复制能否实现:
主库任意创建一个数据库和表。从库刷新后也会出现相同的数据库和表。
标签:主库,主从复制,log,数据库,master,Mysql,读写 From: https://www.cnblogs.com/fxzm/p/17297516.html