效果图
主数据库表数据
从数据库表数据
mysql 数据库配置:主数据库
设置主数据 my.cnf
vim /etc/mysql/my.cnf
配置内容
[mysqld]
server-id=1
log-bin=mysql-bin
# 不需要同步的表
binlog-ignore-db=mysql
binlog-ignore-db=sys
binlog-ignore-db=performance_schema
binlog-ignore-db=information_schema
# 设置使用的二进制日志格式(mixed,statement,row)
binlog-format=mixed
重启服务
systemctl restart mysql
登录数据库
mysql -u root -p
创建同步账户
CREATE USER 'repl'@'%' IDENTIFIED BY 'your_password';
赋予权限
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
刷新
FLUSH PRIVILEGES;
获取数据库状态
# 8
SHOW BINARY LOG STATUS;
# 以下
SHOW MASTER STATUS;
mysql 数据库配置:从数据库
vim /etc/mysql/my.cnf
配置内容
[mysqld]
server-id=2
relay-log=mysql-relay-bin
# 不需要同步的表
binlog-ignore-db=mysql
binlog-ignore-db=sys
binlog-ignore-db=performance_schema
# 设置从服务器记录二进制日志事件
log-slave-updates
# slave设置为只读
read-only
重启服务
systemctl restart mysql
登录数据库
mysql -u root -p
创建链接
CHANGE MASTER TO
MASTER_HOST='主数据库地址',
MASTER_PORT=3306,
MASTER_USER='同步账户:repl',
MASTER_PASSWORD='同步账户密码',
MASTER_LOG_FILE='主数据库对应文件',
MASTER_LOG_POS='主数据同步点',
GET_MASTER_PUBLIC_KEY=1;
ps:如果同步账户密码格式是 caching_sha2_password 需要设置 GET_MASTER_PUBLIC_KEY=1 如果不是可以不用添加
开启同步
start slave;
暂停同步
stop slave;
重置同步
reset slave;