mysql数据库主从同步

  • 数据库版本
    主:5.7.34
    从:8.0.21
主数据库
  1. 修改mysql配置文件 my.ini(windows)
  • 查看配置文件存在位置
-- 查看配置文件存在位置
show variables like '%data%';

在这里插入图片描述

在Linux下叫my.cnf,该文件位于/etc/my.cnf

  • 修改内容
    boo_db为同步的数据库名
	server-id=1
    log-bin=mysql-bin
    #目标数据库
    binlog_do_db=boo_db
  1. 重启mysql服务
  2. 创建指定从库才能访问的用户并赋权
create user 'slave'@'192.168.5.128' identified by '123456';
GRANT ALL PRIVILEGES ON *.* TO 'slave'@'192.168.5.128'; -- 给全部权限
FLUSH PRIVILEGES;

--修改连接的密码方式:
update mysql.user set plugin='mysql_native_password' where user='slave';
FLUSH PRIVILEGES;
从数据库
  1. 在从机上创建从库:boo_db
  2. 在从机上 用 'slave’账户连一下主数据库,看能不能连接上。能连接后面的操作才能成功。
  3. 编辑从数据库的 my.ini 文件
    在 [mysqld] 节点中增加如下内容:
server-id=2 #指定唯一的ID,2至32,必须的,并且不能跟主数据库一样
replicate-do-db=boo_db # 指定要同步的数据库,必须的
replicate-ignore-db=cs_db# 指定不要同步的数据库。
  1. 重启mysql服务
  2. 在从机上连接主数据库
>> mysql -uslave -p123456 -h192.168.1.16
  • 查询主服务器的状态信息,并且找到File 和 Position 的值记录下来;
 mysql> show master status;

+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000222|      1160| rpa-cloud    |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.01 sec)
  1. 在从机启动slave
    6.1 重启数据库
    6.2 运行以下命令启动 slave
	mysql > change master to
		> master_host='192.168.1.16',
		> master_port=3306,
		> master_user='slave',
		> master_password='123456',
		> master_log_file='mysql-bin.000222',
		> master_log_pos=1160;

	mysql > start slave;
-- 确定需要同步的主机信息
change master to master_host='192.168.1.16',master_user='slave',master_password='123456',master_port=3306,master_log_file='mysql-bin.000222',master_log_pos=1160;

-- 开启 slave
start slave;

-- 关闭 slave
STOP slave;

-- 查看slave状态
show slave status;

master_host指向主机地址,
master_port指向主机端口
master_user是主库里面添加的只允许从库访问的用户
master_password是密码

  1. 查看slave的运行状态:
	mysql > show slave status \G;

查看状态为:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
时 slave 启动成功

  1. 配置成功后可以在主库添加一个测试表格,看看从库是否发生了同样的变化。
问题解决
  • Slave_IO_Running: NO
  1. 查看 连接主数据库的 地址/密码是否正确,是否能正确连通
  2. 配置没有加载上,重启从库 或 主库加载配置
  3. 可以通过下面的方式查找异常的原因
    在这里插入图片描述
    例如上图中显示的是The replication receiver thread cannot start because the master has GTID_MODE = ON and this server has GTID_MODE = OFF. 大致意思是 主库开启了 GTID 但是从库没有开启,这里开启从库的GTID就可以了,开启GTID的方法可以参考
    mysql 5.7在线开启/关闭GTIF
  • Slave_SQL_Running: NO
  1. 程序可能在slave上进行了写操作
  2. 也可能是slave机器重起后,事务回滚造成的
  3. 先关闭slave, 将数据库手动同步之后(完全同步)之后再启动slave, 怀疑为数据库不一致,当主库有操作同步到从库的时候找不到对应的结构或数据,导致出错,进而导致NO

一般是事务回滚造成的:
解决办法:

mysql> stop slave ;
mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1; -- 跳过这个错误
mysql> start slave ;
  • Slave_IO_Running:Connecting
    问题原因:
    (1)网络不通
    (2)防火墙端口未开放
    (3)mysql账户密码错误
    (4)mysql主从机配置文件写错
    (5)配置从机连接语法错误
    (6)主机未开放账户连接权限
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
MySQL数据库主从同步是一种常用的数据复制方式,可以确保数据在多个服务器之间的一致性。以下是设置MySQL数据库主从同步的步骤: 1. 配置主服务器: - 在主服务器的配置文件中(一般是my.cnf),启用二进制日志功能(log-bin)并设置一个唯一的标识符。 - 配置一个用于同步的账户,并给予REPLICATION SLAVE权限。 - 重启主服务器,使配置生效。 2. 备份主服务器数据: - 使用mysqldump或其他备份工具,将主服务器上的数据备份到一个文件中。 3. 配置从服务器: - 在从服务器的配置文件中,配置一个唯一的服务器ID。 - 配置一个用于同步的账户,并给予REPLICATION CLIENT权限。 - 重启从服务器,使配置生效。 4. 导入主服务器数据到从服务器: - 将备份文件导入到从服务器上,可以使用mysql命令行或其他导入工具。 5. 启动主从同步: - 在从服务器上执行CHANGE MASTER TO命令,指定主服务器的地址、账户信息和二进制日志文件名。 - 使用START SLAVE命令启动从服务器的同步进程。 6. 检查同步状态: - 使用SHOW SLAVE STATUS命令查看从服务器的同步状态,确保同步正常运行。 以上是基本的主从同步设置步骤,根据具体情况可能会有一些额外的配置和调优。请注意,在配置主从同步之前,确保网络连接正常,主从服务器之间的时间差不大,并且主从服务器的硬件配置相当。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值