主库:
[mysqld]
log-bin=mysql-bin #开启二进制日志
server-id=1 #设置server-id
# 不同步哪些数据库
binlog-ignore-db = mysql
binlog-ignore-db = test
binlog-ignore-db = information_schema
# 只同步哪些数据库,除此之外,其他不同步
binlog-do-db = game
mysql > SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000003 | 73 | test | manual,mysql |
+------------------+----------+--------------+------------------+
从库
[mysqld]
server-id=2 #设置server-id,必须唯一
CHANGE MASTER TO
MASTER_HOST='192.168.1.74',
MASTER_USER='root',
MASTER_PASSWORD='redhat',
MASTER_LOG_FILE='mysql-bin.000014',
MASTER_LOG_POS=313;
start slave;
show slave status\G;
出问题后重新设置同步: 主库:
# 刷新主日志,这时主服务器会重新创建一个binlog文件
flush logs;
# 查看主日志的版本号和位置,这时的主日志版本是mysql-bin.000060,位置是4710
从库:
# 停止复制
mysql> stop replica;
Query OK, 0 rows affected, 1 warning (0.00 sec)
# 修改主日志的版本和位置信息,跟master保持一致
mysql> change master to master_log_file ='mysql-bin.000060',master_log_pos=4710;
Query OK, 0 rows affected, 3 warnings (0.05 sec)
# 刷新权限
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
# 启动复制
mysql> start replica;
Query OK, 0 rows affected (0.01 sec)
查错: select * from performance_schema.replication_applier_status_by_worker\G; Stop slave; Set @@SESSION.GTID_NEXT=’ d393d2e3-9b61-11e5-82bf-141877342ba0:171661170’ Begin; Commit; Set @@SESSION.GTID_NEXT = AUTOMATIC; Start slave;
清理binlog日志
一、没有主从同步的情况下清理日志
mysql 定时清理5天前的binlog
mysql -uroot -p123456 -e 'PURGE MASTER LOGS BEFORE DATE_SUB( NOW( ),INTERVAL 5 DAY)';
mysql -u root -p #进入mysql 控制台
reset master; #重置binlog
二、MySQL主从同步下安全清理binlog日志
1、mysql -u root -p #进入从服务器mysql控制台
show slave status\G; #检查从服务器正在读取哪个日志,有多个从服务器,选择时间最早的一个做为目标日志。
2、进入主服务器mysql控制台
show master log; #获得主服务器上的一系列日志
PURGE MASTER LOGS TO 'binlog.000058'; #删除binlog.000005之前的,不包括binlog.000058
PURGE MASTER LOGS BEFORE '2021-11-22 11:00:00'; #清除2021-11-22 11:00:00前binlog日志
PURGE MASTER LOGS BEFORE DATE_SUB( NOW( ), INTERVAL 3 DAY); #清除3天前binlog日志
三、设置自动清理MySQL binlog日志
/etc/my.cnf
#编辑配置
expire_logs_days = 15 #自动删除15天前的日志。默认值为0,表示从不删除。
log-bin=mysql-bin #注释掉之后,会关闭binlog日志
binlog_format=mixed #注释掉之后,会关闭binlog日志
返回