Mysql主从同步

1.实现背景  

        两个mysql安装在docker当中,一个端口是3306,一个端口是3308,两个mysql不在一个network下。

        tips:在docker中安装mysql时,最好将配置文件挂载到宿主机中,方便修改,我的docker安装命令如下

docker run --name mysql8 --restart=always -v /data/mysql/conf/my.cnf:/etc/mysql/my.cnf -v /data/mysql/data:/var/lib/mysql -v /etc/localtime:/etc/localtime:ro -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:8

2.主数据库配置

    1:修改配置文件

server-id=1     
log-bin=mysql-bin
binlog_format=STATEMENT
  1. server-id=1:

    • 这是 MySQL 服务器的唯一标识符,用于区分主服务器和从服务器。在主从复制环境中,每个服务器都必须有一个唯一的 server-id。确保从服务器的 server-id 不同于主服务器。
  2. log-bin=mysql-bin:

    • 这指示 MySQL 启用二进制日志功能,并将日志文件命名为 mysql-bin。二进制日志用于记录所有更改数据库的操作,它是主从复制的基础。
  3. binlog_format=STATEMENT:

    • 这设置了二进制日志的格式为 "STATEMENT"。在这种格式下,记录的是执行的 SQL 语句,而不是实际的数据更改。这种格式在某些情况下可能会导致问题,特别是当涉及到非确定性函数或复杂事务时。您可以考虑使用 ROW 或 MIXED 格式,具体取决于您的需求。、
    • 如果您在使用 STATEMENT 格式时遇到问题,可以考虑将其更改为 ROW 格式。ROW 格式记录的是具体的数据更改,而不是 SQL 语句,这在某些情况下更可靠。

     2: 重启容器

                docker restart mysql8

     3.创建slave用户并记录状态

        进入主mysql容器(我的容器名称为mysql8),并创建一个用户提供给从服务连接到主服务。

docker exec -it mysql8 mysql -uroot -proot


CREATE USER 'slaveuser'@'%' IDENTIFIED BY 'slavepassword';
GRANT REPLICATION SLAVE ON *.* TO 'slaveuser'@'%';
FLUSH PRIVILEGES;

SHOW MASTER STATUS;
        3:从服务器配置

           1.mysql从数据库配置


server-id=2

      2.从服务器同步配置

        执行下面得命令时把注释去掉

CHANGE MASTER TO
MASTER_HOST='172.18.0.2',    #zaidoucker中 如果两个mysql在同一个网络中,可以使用docker名称,如果不在,使用它的ip,擦汗寻ip得命令:docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' mysql8

MASTER_USER='slaveuser',
master_port=3306,
MASTER_PASSWORD='slavepassword',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=1,
MASTER_SSL=1;
4:检验主从同步配置
SHOW SLAVE STATUS\G;

        启动从机服务器的复制功能,执行SQL,查看状态时,需要保证进程 Slave_IO_Running 和进程 Slave_SQL_Running 的状态值均为Yes,此时主从数据配置成功。

        关闭同步:STOP REPLICA IO_THREAD;

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL主从同步是一种数据复制机制,用于将一个MySQL数据库实例中的数据自动复制到其他MySQL数据库实例,从而实现数据的备份、负载均衡和故障恢复等功能。 在主从同步中,一个MySQL实例被配置为主服务器(Master),而其他实例被配置为从服务器(Slave)。主服务器负责接收和处理客户端的写操作,然后将这些操作记录到二进制日志(Binary Log)。从服务器连接到主服务器,并通过读取主服务器的二进制日志来复制这些操作。从服务器将这些操作应用到自己的数据上,以保持与主服务器数据的一致性。 配置MySQL主从同步需要进行以下步骤: 1. 确保主服务器和从服务器之间可以互相通信。 2. 在主服务器上开启二进制日志功能,并配置二进制日志文件的位置和名称。 3. 在主服务器上创建一个用于复制的用户,并为该用户授予复制权限。 4. 在从服务器上配置复制参数,包括指定主服务器的IP地址、连接用户名和密码等。 5. 启动从服务器,并连接到主服务器进行复制。 6. 监控主从同步过程,确保数据的一致性和同步性。 需要注意的是,在配置主从同步时,需要考虑网络延迟、带宽和硬件性能等因素,以确保同步过程的效率和稳定性。另外,主从同步只能复制数据更改操作(如插入、更新、删除),而不能复制结构变更操作(如创建表、修改表结构)。如果需要同步结构变更,可以使用其他工具或方法来实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值