mysql学习(一) 使用keppalived实现mysql主--主集群(docker下)的ip漂移

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主–主复制集群建立成功。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值