1-2 Mysql主从复制及其优化

从0开始学运维~~~~

一:虚拟机克隆

我的机子主库为192.168.1.114,从库为192.168.1.115

192.168.1.114作为主库master

192.168.1.115作为从库 slave

二:配置主库的my.cnf(此文件在/etc/下,或者在源码中查找/data/mysql-8.0.28/packaging/rpm-common的my.cnf)

1:

添加:

server-id =1

log-bin =mysql-bin

退出保存

在主库上执行my.cnf到从库发送过去的命令

scp /etc/my.cnf 192.168.1.130:/etc/
yes
******

2:

然后修改从库的my.cnf

其它所有东西不变

修改server-id = 2(这个数字)

退出并保存

并且删除从库的/data/mysql/auto.cnf文件

3:

开启主从库的mysql服务

三:登录主库的mysql账号给slave创建账号并赋予权限

1:

登录主库的mysql

mysql -uroot -p
password:

为slave从库创建账号"tongbu"

CREATE USER 'tongbu'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

为账号添加权限

GRANT REPLICATION SLAVE ON *.* TO 'tongbu'@'%';

查看主库状态 show master status;

bin.000001日志记录之后的sql语句,并且在每执行一次sql语句之后 position点位都会发生改变 自己的file和position是什么 ,下面的指定主库信息就写什么。

四:从库配置

##先登录从库的mysql

1:制定主库信息

change master to

master_host='192.168.1.114',master_user='tongbu',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=656;

2:启动从库

slave start;

3:查看从库状态信息

show slave status\G //不加分号哦

查看最重要的两个信息

Slave_IO_Running: Yes

Slave_SQL_Running: Yes 只要都为yes就好了

至此主从配置完毕! 可以试着在主库添加sql语句,之后在从库检验查看。

五:Mysql优化

Mysql主从同步集群在生成环境使用过程中,如果主从服务器之间网络通信条件差或者数据库数据量非常大,容易导致MYSQL主从同步延迟。

MYSQL主从产生延迟之后,一旦主库宕机,会导致部分数据没有及时同步至丛库,重新启动主库,会导致丛库与主库同步错误,如何快速恢复主从同步关系呢,如下有两种方法(最好一定要在夜晚业务低缓期做优化,白天业务峰值会影响数据库正常运作):

(1) 忽略错误后,继续同步:

此种方法适用于主从库数据内容相差不大,或者要求数据可以不完全统一的情况,数据要求不严格的情况。否则不建议使用

Master端执行如下命令,将数据库设置全局读锁,不允许写入新数据:

flush tables with read lock;

Slave端停止Slave I/O及sql线程,同时将同步错误的SQL跳过1次(次数自定义,最好不要太多),跳过会导致数据不一致,最后启动start slave,同步状态恢复,命令如下:

stop slave;

set global sql_slave_skip_counter =1;

start slave;

最后将Master端读锁解开即可,解锁命令如下:

unlock tables;

(2) 重新做主从同步

第一种:局部同步

在mysql 从库下

先查看binlog文件记录的数据库操作

查看每次position变换之间的数据操作,选择要同步的操作点位信息。

mysqlbinlog mysql-bin.000002 |more

linux命令行写如下命令

mysqlbinlog mysql-bin.000002 --start-position=mmm --stop-position=nnn |mysql -uroot -p123456

即可恢复在m到n之间的所有数据库操作!

第二种:全部同步

此种方法适用于主从库数据内容相差很大,或者要求数据完全统一的情况,数据需完全保持一致。

先登录Master端执行如下命令,将数据库设置全局读锁,不允许写入新数据:

flush tables with read lock;

之后退出

1:Master端基于mysqldump、xtrabackup工具进行数据库将完整的数据库备份,也可以用shell脚本或python脚本实现定时备份。

mysqldump -uroot -p123456(输自己的密码哦) --all-database -A >>all.sql

##这条命令不是在登录mysql上面执行的##

2:备份成功之后,将完整的数据导入至丛库

scp -r all.sql 192.168.1.115(从库ip):/root/

3:之后进入从库

mysql -uroot -p123456 <all.sql

4:登录从库

show databases;

数据全部同步!

最后将Master端读锁解开即可,解锁命令如下:

unlock tables;

######额外拓展#####

Linux主主同步(也叫互为主从)

思路很简单,就是把操作完完全全在对应的服务器上配置一遍。。。。大家可以试试

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值