Centos7 mysql高可用

版权声明:仅供学习参考 转载请标明出处。 https://blog.csdn.net/xujiamin0022016/article/details/82348034

Centos7 mysql高可用

 

主 10.6.11.230

从同步 10.6.11.231

从延迟同步 10.6.11.232

 

安装mysql5.7

 

异步复制

创建主从

主从配置参考----------------------------------------------------------------------

先在2个机子上的/etc/my.cnf 上加入

 

 

然后重启mysql再在master上运行                                            

grant replication slave, replication client on *.* to 'root'@'10.6.11.231' identified by  'Hangzhou@123';

grant replication slave, replication client on *.* to 'root'@'10.6.11.232' identified by  'Hangzhou@123';

下面2条方便以后禁止slave用户的连接,直接删除slave用户即可 执行了上面一步 请忽略下面2步

CREATE USER repl_user;

GRANT REPLICATION SLAVE On *.* TO repl_user IDENTIFIED BY 'ht00@pass';

进入mysql客户端执行

flush privileges;

show master status;

slave上执行

change master to master_host='10.6.11.230',master_user='root',master_password='Hangzhou@123',master_port=3306,master_log_file='mysql-bin.000002',master_log_pos=1081,master_connect_retry=30;

在slave 上执行show slave status\G;  #显示2个no

start slave;

在slave 上执行show slave status\G;  #显示2个yes

 

 

 

SQL_Delay:一个非负整数,表示秒数,Slave滞后多少秒于master。 
SQL_Remaining_Delay:当 Slave_SQL_Running_State 等待,直到MASTER_DELAY秒后,Master执行的事件, 
此字段包含一个整数,表示有多少秒左右的延迟。在其他时候,这个字段是0。 

#这个单位是秒

change master to master_delay = 86400;

这个并不会因为mysql重启失效

 

 

 

其中一个从是异步同步,另一个从实行延迟一天同步 用于

1误删除恢复

2 延迟测试

3 历史查询

 

半同步复制

 

默认情况下,MySQL的复制功能是异步的,异步复制可以提供最佳的性能, 主库把binlog日志发送给从库,这一动作就结束了,并不会验证从库是否接收完毕,这一过程,也就意味着有可能出现当主服务器或从服务器端发生故障的时候,有可能从服务器没有接收到主服务器发送过来的binlog日志,这就会造成主服务器和从服务器的数据不一致,甚至在恢复时造成数据的丢失。

 

半同步复制模式必须在主服务器和从服务器端同时开启,否则主服务器默认使用异步复制模式

 

通过 set global rep-semi-sync-master-timeout=milliseconds 设置。需要注意的是作为服务器变量,服务器重启此值不被保

需要在master配置文件/etc/my.cnf中 加入

需要在slave配置文件/etc/my.cnf中 加入

 

查看是否开启成功

SELECT PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME LIKE '%semi%';

测试

停止2台slave

stop slave;

创建一个db 测试    发现正确 有延迟10s

 

show status like '%semi%';

 

 

下图看到slave已经关闭了半同步复制模

 

重启slave

 

 

再测试是否重新切回了半同步复制

 

2种同步方式 测试成功

 

 

安装percona-xtrabackup

percona-xtrabackup 用于备份及恢复都很好用

cd /tmp/

wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.3.5/binary/redhat/7/x86_64/percona-xtrabackup-2.3.5-1.el7.x86_64.rpm

yum localinstall percona-xtrabackup-2.3.5-1.el7.x86_64.rpm -y

 

创建测试库

备份所有数据库 可以innobackupex –-help 查看

innobackupex --defaults-file="/etc/my.cnf" --user=root --password=Hangzhou@123 --socket=/tmp/mysql.sock  /tmp/

 

不支持5.7.12尴尬   应该是要安装2.4版本

 

先用mysql5.6.41演示一下

备份所有数据库

如果你是mysql5.6  你可以直接用innobackupex 备份数据库,使生成的库 直接成为slave库。

 

MD5校验失败 出现这个错误是因为安装Xtrabackup 2.3.5时,没有安装 perl-Digest-MD5组件   不过问题不大也能备份出来  也可以yum安装解决

yum -y install perl-Digest-MD5

 

 

文件夹就是数据库名

yum安装依赖之后重新备份不报错了  顺便用1G内存加速一下备份

 

截一个第二天没有用内存加速 备份成功的图

备份主库10.6.11.234数据

innobackupex --defaults-file=/etc/my.cnf --host=localhost --user=root  --password=Hangzhou@123 /tmp/

 

 

 

拷贝备份文件至slave主机

scp -r /tmp/2018-09-04_13-28-53/ 10.6.11.235:/tmp/dbback/

 

登录slave主机10.6.11.235

停止数据库
service mysqld stop

数据目录重命名
mv /usr/local/mysql/data /usr/local/mysql/data_bak

应用日志   恢复的时候也可以用内存加速哦
 

innobackupex --apply-log /tmp/dbback/2018-09-04_13-28-53/ --use-memory=1G

 

chown -R mysql:mysql  /usr/local/mysql

 

启动mysql 建议用./mysqld &

 

 

 

 

slave 启动成功

 

 

看到同行说,MySQL 5.6版本以后,在进行主从复制的时候可以使用GTID的方式,无需再找binglog和pos点,只需要知道主服务器的IP、端口、账户、密码就可以实现自动找点同步。没有亲身实践过,不是很清楚。

 

 

 

 

 

 

 

猜你喜欢

转载自blog.csdn.net/xujiamin0022016/article/details/82348034