关于mysql主从:mysql-主从复制

48次阅读

共计 1574 个字符,预计需要花费 4 分钟才能阅读完成。

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 官网文档!下一篇文章主从复制中常见谬误,以及解决形式!

正文完
 0