Mysql 使用binlog配置主从同步
master 配置
修改配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| [mysqld] log-bin server-id=1 replicate-do-db=tu-portal
binlog_format=ROW max_binlog_size=100M binlog_cache_size = 16M log_bin=/var/lib/mysql/mysql-bin.log expire_logs_days= 7 binlog_cache_size=16M relay_log_recovery = 1
sync_binlog= 1 innodb_flush_log_at_trx_commit = 1
|
创建从库用户
1 2 3
| CREATE USER 'slave1'@'127.0.0.1' IDENTIFIED BY 'qw1234'; GRANT REPLICATION SLAVE ON *.* TO 'slave1'@'127.0.0.1'; FLUSH PRIVILEGES;
|
对于8.4以上的版本,要么启用mysql_native_password插件,要么使用rsa认证
我使用的启用mysql_native_password插件
修改my.cnf
1 2
| [mysqld] mysql_native_password=ON
|
上面的创建用户的sql改为:
1 2 3 4
| CREATE USER 'slave1'@'127.0.0.1' IDENTIFIED with mysql_native_password BY 'qw1234'; GRANT REPLICATION SLAVE ON *.* TO 'slave1'@'127.0.0.1'; FLUSH PRIVILEGES;
|
dump主库数据
1 2 3 4 5
| # 给主库上锁 FLUSH TABLES WITH READ LOCK; # dump数据 mysqldump -uroot -pqw1234
|
查看主库状态
记录File和Positon两个字段的值
1 2 3
| show master status; # 对于mysql 8.4 以上版本 show binary log status;
|
释放锁
配置从库
修改从库配置文件
修改从库配置文件:
1 2 3 4 5
| [mysqld] log-bin server-id=2 #replicate-do-db=tu-portal
|
重启数据库
向从库导入数据
1
| nohup mysql -uroot -P 3307 -pqw1234 -h 127.0.0.1 < ~/temp/mysql-master-slave/a.sql &
|
配置salve
1 2 3
| STOP SLAVE; CHANGE MASTER TO MASTER_HOST='192.168.33.22',MASTER_USER='slave1',MASTER_PASSWORD='slavepass',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=613; START SLAVE;
|
对于8.4以上的版本
1 2 3
| STOP REPLICA; CHANGE REPLICATION SOURCE TO SOURCE_HOST='127.0.0.1',SOURCE_PORT=3306,SOURCE_USER='slave1',SOURCE_PASSWORD='qw1234',SOURCE_LOG_FILE='mysql-bin.000004',SOURCE_LOG_POS=459; START REPLCIA;
|