本文使用apt-get方式安装,其他方式安装配置文件路径可能会有所差异
安装
apt-get update
apt-get install mysql-server-5.7
apt-get install mysql-client-5.7
配置master
修改/etc/mysql/mysql.conf.d/mysqld.cnf
#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
使用mysql命令登录mysql,添加同步账号
create user 'repl'@'%' identified by 'RepL@)18';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
GRANT ALL ON *.* TO `repl`@`%`;
GRANT ALL ON `dmp`.* TO `repl`@`%` ;
FLUSH PRIVILEGES;
上面三个GRANT少一个也无法成功,网上好多教程都会少一条,踩了半天坑才成功。一定要注意设置设置账号为从服务器账号的同时要给全部权限,还要给单个数据库全部权限,如果多个数据库,需要给多个数据库单独指定权限GRANT ALL ON
dmp.* TO
repl@
%;
查看配置是否生效
mysql> show master status;
出现如下提示
记住上面的file和postion,配置从库时会用到。
接下来可以使用同步从服务器的同步账号登录是意思啊,进入mysql后执行show databases;
看能否找到要同步的数据库,如果没有,说明配置有问题。
配置slave
修改/etc/mysql/mysql.conf.d/mysqld.cnf
#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='LENGjing@2*8#3&7', MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=15051;
还记得主库执行show master status;
时看到的内容吗
上面的master_log_file是在Master中show master status显示的File,
而master_log_pos是在Master中show master status显示的Position。
然后可以通过show slave status查看配置信息。如果没有同步成功,请查看show slave status中的position和file是否和master中的对应了。
mysql> show slave status \G;
观察这两个值是否都是yes,Slave_IO_Running: Yes 和Slave_SQL_Running: Yes,如果都是yes,说明运行正常。
如果出现同步失败,可以根据提示处理错误,处理完成后,需要刷新同步配置:
先停止同步
mysql> stop slave;
清理掉之前的配置,防止同步已经同步了的数据
mysql> reset slave all;
然后重新连接主库,进行同步。
不知道为什么我配置好了,过段时间会断开,原因是因为主库的MASTER_LOG_FILE
和MASTER_LOG_POS
会变化,但是从库却不会自动更新
参考资料
https://www.cnblogs.com/eleven24/p/7350000.html
https://blog.csdn.net/shiyong1949/article/details/74990407