MySql 主从同步


Linux 18 阅 0 评

怎么实现?
在 master 机器上,主从同步事件会被写到 binlog 文件中(类似 mysql-bin.,具体由 my.cnf 设定);
在 slave 机器上,slave 读取主从同步事件,并根据事件在 slave 上做相应更改。

环境

模式:1 主,1 从

主机

Debian Buster
Mysql 5.6
1.1.1.1

从机

Debian Buster
Mysql 5.6
2.2.2.2

查询

查看 Mysql 状态

ps -ef | grep mysql

查看 my.cnf 路径(/etc/my.cnf

mysql --help | grep 'Default options' -A 1

A 主机操作

登录数据库

mysql -uRoot -pPassWord

在 A 增加帐号 UserA,允许它登陆 B 操作

mysql> GRANT all privileges ON *.* TO UserA@'2.2.2.2' IDENTIFIED BY '密码';

锁定数据库(使其无法更改日志)

mysql> FLUSH TABLES WITH READ LOCK;

导出现有数据为 dbdump.sql,新建 SSH 窗口执行:

mysqldump -uRoot -pPassWord --all-databases --master-data > dbdump.sql

重置 MASTER 日志,创建 .000001 空日志

mysql> RESET MASTER;

记录当前日志 File 和 Position

mysql> SHOW MASTER STATUS;

解锁数据库

mysql> UNLOCK TABLES;

修改 A 主机 my.cnf

[mysqld]
bind-address = 0.0.0.0
server-id = 1
log_bin = mysql-bin
expire_logs_days = 7

# 需同步数据库
binlog-do-db = leeyr
# 需忽略数据库
binlog-ignore-db = mysql
# 从机启用日志功能
log-slave-updates = 1

重启 Mysql

service mysqld restart

把本地 dbdump.sql 上传到远程 B

scp -r -P 端口 dbdump.sql root@2.2.2.2:/root

B 从机的操作

登录数据库

mysql -uRoot -pPassWord

在 B 增加帐号 UserB,允许它登陆 A 操作

mysql> GRANT all privileges ON *.* TO UserB@'1.1.1.1' IDENTIFIED BY '密码';

修改 B 从机 my.cnf

[mysqld]
bind-address = 0.0.0.0
server-id = 2
log_bin = mysql-bin
expire_logs_days = 7

重启 Mysql

service mysqld restart

导入 dbdump.sql

mysql> SOURCE dbdump.sql

停止 slave

mysql> stop slave;

重置 slave

mysql> RESET SLAVE;

设置主从建立连接

mysql> change master to master_host='1.1.1.1', master_user='UserA', master_password='密码', master_log_file='mysql-bin.000001', master_log_pos=120;

# master_log_file,master_log_pos 在上面有获取到。

开始主从同步

mysql> start slave;

查看任务状态

show slave status\G

# 正常状态提示
Slave_IO_State: Waiting for master to send event
...
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
...

# 如果 \G 后面添加了 ; ,那么一定报错 ERROR: No query specified。
# 显示 Slave_IO_Running: Connecting 说明参数错误。
①请小心修改从机器的数据,或者不修改。
②资料 http://bbs.chinaunix.net/thread-2297959-1-1.html
③记得删除 dbdump.sql

可能用到:
测试从 B 登陆 A

mysql -h1.1.1.1 -u用户 -p密码

检查端口

netstat -tln

my.cnf 详细介绍
https://blog.csdn.net/cbuy888/article/details/80527385

更新 2020-01-01
评论 ( 0 )
私信
pic
code
pre