MySQL进行主从配置可以降低服务器压力,提高服务器的可用性。设置步骤如下:
环境:
服务器1:Centos Linux 7.3 ip: 172.16.0.102
服务器2:Centos Linux 7.3 ip: 172.16.0.104
MySQL:mysql5.7.18
1,配置主服务器
修改/etc下的修改my.cnf文件,在[mysqld]下面增加下面几行,然后重启MySQL数据库。
#server-id给数据库服务的唯一标识
server-id=1
#log-bin设置此参数表示启用binlog功能,并指定路径名称
log-bin=/var/lib/mysql/mysql-bin
sync_binlog=0
#设置日志的过期天数
expire_logs_days=7
#binlog_cache_size此参数表示binlog使用的内存大小
binlog_cache_size=1M
在Master MySQL上创建一个用户‘repl’,并允许其他Slave服务器可以通过远程访问Master,通过该用户读取二进制日志,实现数据同步。
mysql> create user 'repl'@'172.16.%' identified by 'L*****@2*8#3&7';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'172.16.%';
重启mysql使配置生效
mysql> show master status;
2,配置从服务器
修改/etc下的修改my.cnf文件,在[mysqld]下面增加下面几行,然后重启MySQL数据库。
#server-id给数据库服务的唯一标识
server-id=2
#read_only设置数据库为只读,防止从库数据修改后,主从数据不一致,但是有Super权限的账号还是有写的权限,所以要某个账号只读的话,可以去掉账号的Super权限
read_only=1
#指定需要同步的表
replicate-wild-do-table=ljzxdb.%
#binlog_cache_size此参数表示binlog使用的内存大小
binlog_cache_size=1M
重启mysql使配置生效
然后连接主库
mysql> CHANGE MASTER TO MASTER_HOST='172.16.0.102', MASTER_USER='repl', MASTER_PASSWORD='[email protected]*8#3&7', MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=15051;
启动同步
mysql> start slave;
查看从库状态
mysql> show slave status \G;
观察这两个值是否都是yes,Slave_IO_Running: Yes 和Slave_SQL_Running: Yes,如果都是yes,说明运行正常。
如果出现同步失败,可以根据提示处理错误,处理完成后,需要刷新同步配置:
先停止同步
mysql> stop slave;
清理掉之前的配置,防止同步已经同步了的数据
mysql> reset slave all;
然后重新连接主库,进行同步。