mysql学习(一) mysql主–主集群的搭建
参考资料:
https://www.cnblogs.com/songwenjie/p/9371422.html
https://www.cnblogs.com/kevingrace/p/6710136.html
1 两台主机之间建立信任(ssh免密码)
1.1 在主节点a(10.10.10.26):
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub root@10.10.10.50
1.2 在主节点b(10.10.10.50):
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub root@10.10.10.26
2 搭建基于docker的mysql主主复制集群
2.1 下载mysql镜像:
docker pull docker.io/mysql
2.2 在两个节点a、b上安装mysql容器:
docker run --name=mysql-master\
--net=host \
-e MYSQL_ROOT_PASSWORD=123456 \
-v /home/Mysql:/var/lib/mysql \
-d docker.io/mysql
docker run --name=mysql-slave\
--net=host \
-e MYSQL_ROOT_PASSWORD=123456 \
-v /home/Mysql:/var/lib/mysql \
-d docker.io/mysql
2.3 进入mysql-master容器,安装vim,并修改配置文件:
docker exec –it mysql-master bash
apt-get update
apt-get install vim
vi /etc/mysql/my.cnf
[mysqld]
## 同一局域网内注意要唯一
server-id=100
## 开启二进制日志功能,可以随便取(关键)
log-bin=mysql-bin
配置完成之后,需要重启mysql服务使配置生效:
service mysql restart
重启mysql服务时会使得docker容器停止,需要重新启动容器:
docker restart mysql-master
在mysql-master容器中的数据库创建数据同步用户,授予用户 slave REPLICATION SLAVE权限和REPLICATION CLIENT权限,用于在主从库之间同步数据:
CREATE USER 'slave'@'%' IDENTIFIED WITH ‘mysql_native_password’ BY '123456';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';
2.4 进入mysql-slave容器,安装vim,并修改配置文件:
docker exec –it mysql-slave bash
apt-get update
apt-get install vim
vi /etc/mysql/ my.cnf
[mysqld]
## 设置server_id,注意要唯一
server-id=101
## 开启二进制日志功能,以备Slave作为其它Slave的Master时使用
log-bin=mysql-slave-bin
## relay_log配置中继日志
relay_log=edu-mysql-relay-bin
配置完成之后,需要重启mysql服务使配置生效:
service mysql restart
重启mysql服务时会使得docker容器停止,需要重新启动容器:
docker restart mysql-salve
2.5 在主节点a(mysql-master)上进入mysql容器,执行:
show master status;
2.6 在主节点b(mysql-slave)进入mysql容器,执行:
change master to master_host='10.10.10.26', master_user='slave', master_password='123456', master_port=3306, master_log_file='mysql-bin.000001', master_log_pos= 2830, master_connect_retry=30;
其中,master_log_file和master_log_pos为上图中的File和Position的值
2.7 启动主节点b,主从复制过程并查看其状态:
start slave;
查询主从同步状态:
show slave status \G
至此,已经在主节点a和主节点b之间建立了主从同步。
2.8 现需要在b和a节点之间建立主从复制:
在slave节点数据库创建数据同步用户,授予用户 master REPLICATION SLAVE权限和REPLICATION CLIENT权限,用于在主从库之间同步数据:
CREATE USER 'master'@'%' IDENTIFIED WITH ‘mysql_native_password’ BY '123456';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'master'@'%';
在副节点slave进入mysql容器,执行:
show master status;
在主节点a进入mysql容器,执行:
change master to master_host='10.10.10.48', master_user='master', master_password='123456', master_port=3306, master_log_file='mysql-bin.000001', master_log_pos= 2830, master_connect_retry=30;
在主节点a上执行:
start slave;
查询主从同步状态:
show slave status \G
当Slave_Io_Running和Slave_SQL_Running都为YES时,说明主节点b到主节点a的主从复制已开启,此时,说明MySQL主–主复制集群建立成功。