mysql配置主从库全流程纪录

2 篇文章 0 订阅

业务需要,正好自己从来没有接触过mysql运维相关,把步骤记录下来。

环境信息

  • MySQL 5.7.25
  • 主库172.24.7.108
  • 从库172.24.7.109

主库创建同步角色

查看已有用户

select distinct concat('User: ''',user,'''@''',host,''';') as query from mysql.user;

删除用户

drop user 'slave'@'172.24.7.109';

创建新用户并限定访问ip

create user 'slave'@'172.24.7.109' identified by '1234509876';

查询用户权限

show grants for 'slave'@'172.24.7.109';

开启数据复制权限(replication slave不能只作用于某一数据库,而是全局)

grant replication slave on *.* to 'slave'@'172.24.7.109';

刷新权限

flush privileges;

最终效果如下
在这里插入图片描述

修改主库配置(/etc/my.cnf)

增加以下内容

[mysqld]
# 启用日志,默认为mysql-bin,可替换为指定的目录
log-bin = mysql-bin
# 不可重复的序号
server-id = 1
# 日志保存期限(可选)
expire_logs_days = 30
# 基于行纪录,5.7.7及以后的版本默认是ROW
binlog_format = ROW

修改从库配置(/etc/my.cnf)

增加以下内容

[mysqld]
# 启用日志(可选)
log-bin = mysql-bin
# 不可重复的序号
server-id = 2
# 日志保存期限(可选)
expire_logs_days = 30
# 指定同步的数据库(可选)
replicate-do-db = database
# 基于行纪录,5.7.7及以后的版本默认是ROW
binlog_format = ROW
# 启动复制的进程数
slave_parallel_workers = 4
# 基于组提交
slave_parallel_type = LOGICAL_CLOCK
master_info_repository = TABLE
relay_log_info_repository = TABLE
relay_log_recovery = ON

主从同步

从这里才开始进行同步过程,首先锁定主库只读

flush tables with read lock;

备份主库需要做同步的数据库(如果主库没有数据的话此步可以省略)

mysqldump -h172.24.7.108 -P3306 -uroot -ppassword -B database > /home/backup.sql

-B: 导出的数据文件中已存在创建库和使用库的语句,不需要手动在原库是创建库的操作,在恢复过程中不需要手动建库,可以直接还原恢复。
如果需要压缩备份文件在语句最后增加 | gzip >/home/backup.gz

查看主库bin-log偏移量并记录

show master status;

在这里插入图片描述
解除只读

unlock tables;

从库导入备份的数据

mysql -uroot -ppassword < backup.sql

停止从库slave进程

stop slave;

设置从库同步信息

change master to master_host='172.24.7.108',master_port=3306,master_user='slave',master_password='1234509876',master_log_file='mysql-bin.000014',master_log_pos=73276696;

启动同步

start slave;

查看同步状态,等待红框内两项都变成Yes即为同步成功

show slave status\G;

在这里插入图片描述
在这里插入图片描述
此后需要备份时只需要关闭主从连接,再对从库进行备份即可。

从备份信息中恢复单个表数据

提取建表语句

sed -e'/./{H;$!d;}' -e 'x;/CREATE TABLE `user_online`/!d;q' backup.sql > user_online.sql

提取insert 语句(update同理)

grep -i 'INSERT INTO `user_online`' backup.sql > user_online.sql
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
配置MySQL主从复制,你需要进行以下步骤: 1. 首先,在主服务器上编辑主配置文件(my.cnf或my.ini),找到并设置以下参数: ``` server-id = 1 # 主服务器的唯一标识ID,每个服务器都应该有不同的ID log_bin = /var/log/mysql/mysql-bin.log # 启用二进制日志文件,用于记录所有的写操作 binlog_do_db = your_database_name # 需要复制的数据名称 ``` 2. 重启主服务器以使配置生效。 3. 在主服务器上创建一个用于复制的专用用户,并授予适当的权限。例如,使用以下命令在MySQL shell中创建用户: ``` CREATE USER 'replication_user'@'slave_ip' IDENTIFIED BY 'password'; GRANT REPLICATION SLAVE ON *.* TO 'replication_user'@'slave_ip'; FLUSH PRIVILEGES; ``` 4. 在主服务器上执行以下命令来锁定数据并获取当前二进制日志文件的位置: ``` FLUSH TABLES WITH READ LOCK; SHOW MASTER STATUS; ``` 5. 记下上述命令的输出,包括文件名和位置(File 和 Position)。 6. 在从服务器上编辑从配置文件,并设置以下参数: ``` server-id = 2 # 从服务器的唯一标识ID,与主服务器不同 relay-log = /var/log/mysql/mysql-relay-bin.log # 从服务器的中继日志文件 log_bin = /var/log/mysql/mysql-bin.log # 启用二进制日志文件 ``` 7. 重启从服务器以使配置生效。 8. 在从服务器上使用以下命令来连接到主服务器并配置复制: ``` CHANGE MASTER TO MASTER_HOST='master_ip', MASTER_USER='replication_user', MASTER_PASSWORD='password', MASTER_LOG_FILE='master_log_file_name', MASTER_LOG_POS=master_log_position; ``` 其中,master_ip 是主服务器的IP地址,replication_user 是在主服务器上创建的复制用户,password 是复制用户的密码,master_log_file_name 和 master_log_position 分别是步骤4中获取的日志文件名和位置。 9. 在从服务器上启动复制进程: ``` START SLAVE; ``` 10. 检查从服务器的状态,确保没有错误: ``` SHOW SLAVE STATUS\G ``` 确保以下参数的值为 "Yes": - Slave_IO_Running - Slave_SQL_Running 如果一切配置正确,主从复制就会开始工作。主服务器上的更改会自动在从服务器上复制和应用。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值