mysql主从与互为主从

mysql主从与互为主从(容器版)

两台安装mysql数据库

version: '3'
services:
  mysql:
    container_name: mysql
    image: mysql:5.7.32
    hostname: mysql
    restart: always
    environment:
      - "MYSQL_ROOT_PASSWORD=*********"
    ports:
      - 3306:3306
    volumes:
      - ./common/conf:/etc/mysql/conf.d
      - ./common/data:/var/lib/mysql
      - ./common/logs:/logs
      - "/etc/localtime:/etc/localtime"
    command: [
            '--character-set-server=utf8mb4',
            '--collation-server=utf8mb4_unicode_ci',
            '--max_connections=3000'
    ]
[mysqld]
log-bin=mysql-bin
server-id=1
gtid-mode=ON
enforce-gtid-consistency=ON
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

一、mysql主从
主服务器修改my.cnf,并重启挂载进容器

server-id=1  #这个与从服务器id不能相同
log-bin=mysql-bin #开启二进制日志

从服务器修改my.cnf,并重启挂载进容器

server-id=2  #这个与主服务器id不能相同
log-bin=mysql-bin #开启二进制日志

主服务器进入mysql容器,执行创建备份账号

docker exec -it --user root mysql /bin/bash
mysql -uroot -p
CREATE USER 'repl'@'%' IDENTIFIED BY 'Passw0rd' REQUIRE SSL;GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;
show master status;

从服务器进入mysql容器,执行备份

docker exec -it --user root mysql /bin/bash
mysql -uroot -p
CHANGE MASTER TO MASTER_HOST='主ip', MASTER_PORT=3306, MASTER_USER='repl', MASTER_PASSWORD='Passw0rd', MASTER_AUTO_POSITION=1, MASTER_SSL=1;
START SLAVE;
show slave status;

至此数据从主从复制搭建完成

二、互为主从
第一主服务器修改my.cnf,并重启挂载进容器

server-id=1
log-bin=mysql-bin
auto_increment_increment=2   #一般有n台主mysql就填n,这里n是2
auto_increment_offset=1     #一般填写第n台主机mysql,这里指定其为第一台

第二主服务器修改my.cnf,并重启挂载进容器

server-id=2
log-bin=mysql-bin
auto_increment_increment=2
auto_increment_offset=2

第一主服务器进去容器,执行账号配置

docker exec -it --user root mysql /bin/bash
mysql -uroot -p
create user 'repl'@'第二主ip' identified with mysql_native_password by 'mysql的密码';
grant replication slave on *.* to 'repl'@'第二主ip';
flush privileges;
show grants for 'repl'@'第二主ip';
show master status;

第二主进入容器开启复制

docker exec -it --user root mysql /bin/bash
mysql -uroot -p
change master to
master_host='第一主的ip',
master_user='repl',
master_password='第一主创建的密码',
master_log_file='mysql-bin.000002', #此参数为第一主执行show master status;后的参数
master_log_pos=45542; #此参数为第一主执行show master status;后的参数
start slave; #启动slave

show slave status\G;#查看状态展示的信息中没有error就说明配置成功。

此时第一主作为主节点第二主从节点配置完成;将第二主为主节点第一主作为从节点同样操作一遍,需要注意服务器地址。

测试

可进行数据修改测是否同步

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值