mysql 主从复制

Posted jksusu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql 主从复制相关的知识,希望对你有一定的参考价值。

mysql 主从复制笔记


本地测试采用 docker 模拟部署

docker pull mysql:5.7
# 启动master
docker run -itd --name=mysql-master -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7 
# 启动 slave
docker run -itd --name=mysql-slave -p 3308:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7 
这样两台mysql主机已经部署完成,查看详情master : docker inspect mysql-master

进入master主机修改配置

docker exec -it mysql-master /bin/bash

# 修改位于 /etc/mysql/my.cnf 的配置,加入一下内容。需要安装一下 vi 或者 vim

[mysqld]
server-id=1 #唯一ID
log-bin=mysql-bin #开启二进制日志功能

创建从主机连接用户

mysql -uroot -p123456
# 创建用户
CREATE USER \'slave\'@\'%\' IDENTIFIED BY \'123456\';
# 授权
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO \'slave\'@\'%\';

# 退出重启容器
docker restart mysql-master

进入slave主机修改配置

# 修改位于 /etc/mysql/my.cnf 的配置,加入一下内容。需要安装一下 vi 或者 vim

[mysqld]
server-id=2 # 注意这里的id 不能重复,必须唯一
log-bin=mysql-slave-bin # 开启二进制日志功能,可作为其他 slave主机的master
relay_log=edu-mysql-relay-bin

# 退出重启容器
docker restart mysql-slave

连接 master 主机

mysql -uroot -p123456
# 执行下面语句 其中 master_host 可以通过上面 docker命令查看 master主机的 IPAddress
change master to master_host=\'172.17.0.2\', master_user=\'slave\', master_password=\'123456\', master_port=3306, master_log_file=\'mysql-bin.000001\', master_log_pos=0;

#启动
start slave;

# 然后输入命令查看详情
show slave status \\G;

# 如果这两个项目是 Yes 说明万事ok
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
往 master 写入数据,通过 slave 查询数据。确实是否同步。

奉上一份php测试伪代码

$master = new PDO(\'mysql:host=localhost:3307;dbname=test\', \'root\', \'123456\');
$master->exec("INSERT test (name) VALUES (\'master\')");

$slave = new PDO(\'mysql:host=localhost:3308;dbname=test\', \'root\', \'123456\');
$data = $slave->exec("select * from test");
var_dump($data);

其他命令参考

# 查看状态
show slave status \\G;
show master status \\G;

# 停止启动IO线程
STOP SLAVE IO_THREAD;
START SLAVE IO_THREAD;
以上内容仅供学习参考,真实场景下请参考mysql官方文档!下一篇文章主从复制中常见错误,以及解决方式!

以上是关于mysql 主从复制的主要内容,如果未能解决你的问题,请参考以下文章

MySQL 主从复制与读写分离(原理深刻,过程详细,值得一看)

MySQL主从复制与读写分离

MySQL主从复制及读写分离实际部署与验证

MySQL主从复制及读写分离实际部署与验证

mysql实现主从复制/主从同步

MySQL主从复制以及读写分离(❤❤❤❤含理论和实验❤❤❤❤大家中秋快乐!㊗)