主从同步的前提是读写分离,所谓读写分离,就是至少两个mysql服务,其中一个mysql服务做增删改【主】,另外一个【多个】mysql服务做查询【从】,增删改的数据要很快同步到从机,这就是主从同步,mysql自带主从同步。本文将阐述如何配置主从同步。
1、前提约束
- 两台CentOS7虚拟机,都已经安装mysql。作者的两台机子分别是192.168.100.134、192.168.100.136,端口都为3306,账号都为root,密码都为zhangli。请读者根据自己的事情情况设置。
vmware中安装CentOS虚拟机 https://www.jianshu.com/p/2b6340bf43e5
CentOS中安装mysql https://www.jianshu.com/p/6691f6fb8c0e - 两台机子相互ping得通
https://www.jianshu.com/p/b850e695a490
2、登录到192.168.100.134【主机】
- 编辑my.cnf
[mysqld]
server-id=2
log-bin=mysql-bin
read-only=1
log-slave-updates=1
replicate-do-db=db01 #要同步的数据库,如果有多个数据库,则配置多行
replicate-do-db=db02 #要同步的数据库,如果有多个数据库,则配置多行
binlog-ignore-db=mysql #被忽略的数据
- 重启数据库
systemctl restart mysqld
- 查看master状态
mysql -uroot -pzhangli
show master status
3、登录到192.168.100.136【从机】
- 编辑my.cnf
[mysqld]
server-id=1
log-bin=mysql-bin
log-slave-updates=1
binlog-do-db=db01 #要同步的数据库,如果有多个数据库,则配置多行
binlog-do-db=db02 #要同步的数据库,如果有多个数据库,则配置多行
binlog-ignore-db=mysql #被忽略的数据
binlog_checksum =none
- 重启mysql
systemctl restart mysqld
mysql -uroot -pzhangli
- 设置slave复制,注意MASTER_LOG_FILE、MASTER_LOG_POS就是上面记录的值,下面整个是一条语句。
CHANGE MASTER TO
MASTER_HOST='192.168.100.134',
MASTER_USER='root',
MASTER_PASSWORD='zhangli',
MASTER_PORT=3306,
MASTER_LOG_FILE='mysql-bin.000004',
MASTER_LOG_POS=106,
MASTER_CONNECT_RETRY=10;
- 启动slave以及查看状态
start slave;
SHOW SLAVE STATUS\G;
红颜色的地方都为yes,则证明配置主从同步成功。
4、测试
在主机134中创建db01、db02、在db01/02中做任何的操作,从机136都会有一模一样的结果。
至此,我们就完成了mysql的主从同步。