Mysql/Mariadb 主从复制记录

主库:

[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日志  



返回