使用MqSql主(master)从(slave)复制技术实现数据库热备

使用MqSql主从复制技术实现数据库热备

MySQL replication?

  • replication可以实现将数据从一台数据库服务器(master)复制到一台或者多台数据库服务器(slave)
  • 默认情况下属于异步复制,无需维持长连接
  • 通过配置,可以复制所有的库或者几个库,甚至库中的一些表
  • 是MySQL内建的,本身自带的

原理:master将数据库的改变写入二进制日志,slave同步并执行

 

部署MySQL主从同步<M-S>

环境:

IP

系统/mysql版本

角色

192.168.240.63

centos7.5/5.7

master

192.168.240.64

centos7.5/5.7

slaver

1.安装mysql5.7:

tar xvf mysql-5.7.27-1.el7.x86_64.rpm-bundle.tar

yum -y install ./mysql*.rpm

systemctl start mysqld //启动mysql

 

在mysql的配置文件/etc/my.cnf关闭密码强度审计插件,并重启mysql:

[root@localhost ~]# vim /etc/my.cnf

在这个配置文件中最后添加:

validate-password=OFF //不使用密码强度审计插件

systemctl restart mysqld //重启服务

 

[root@localhost ~]# grep 'password' /var/log/mysqld.log //获取临时密码

[root@localhost ~]# mysql -u root -p'6j?1e9&.p%E6' //使用临时密码登陆

mysql> set password for root@localhost = password('123456') //修改密码

mysql> flush privileges; //立即生效

mysql> quit;

 

复制master安装文件到slave:

[root@localhost ~]# scp mysql-5.7/mysql*.rpm root@192.168.240.64:/root/mysql-5.7

root@192.168.240.64's password:

mysql-community-client-5.7.27-1.el7.x86_64.rpm 100% 24MB 92.5MB/s 00:00

mysql-community-common-5.7.27-1.el7.x86_64.rpm 100% 275KB 26.2MB/s 00:00

mysql-community-devel-5.7.27-1.el7.x86_64.rpm 100% 3744KB 60.2MB/s 00:00

mysql-community-embedded-5.7.27-1.el7.x86_64.rpm 100% 45MB 83.0MB/s 00:00

mysql-community-embedded-compat-5.7.27-1.el7.x86_64. 100% 23MB 107.1MB/s 00:00

mysql-community-embedded-devel-5.7.27-1.el7.x86_64.r 100% 124MB 75.5MB/s 00:01

mysql-community-libs-5.7.27-1.el7.x86_64.rpm 100% 2219KB 64.9MB/s 00:00

mysql-community-libs-compat-5.7.27-1.el7.x86_64.rpm 100% 2067KB 35.1MB/s 00:00

mysql-community-server-5.7.27-1.el7.x86_64.rpm 100% 165MB 59.1MB/s 00:02

mysql-community-test-5.7.27-1.el7.x86_64.rpm 100% 117MB 82.5MB/s 00:01

 

2.创建要同步的数据库:

[root@localhost ~]# mysql -u root -p //登陆数据库

mysql> create database HA; //创建HA库做测试

mysql> use HA; 进入HA库

mysql> create table T1(id int,name varchar(20)); 在HA下创建T1表

mysql> quit;

[root@localhost ~]# systemctl stop mysqld

 

3.配置my.cnf 添加以下内容

log-bin=mysql-bin-master //启动二进制日志

server-id=1 //本机数据库ID显示

binlog-do-db=HA //可以被从服务器复制的库,需要同步的数据库名

binlog-ignore-db=mysql //不可以被从服务器复制的库

 

[root@localhost ~]# systemctl restart mysqld //重启mysql

 

4.授权

mysql> grant replication slave on *.* to slave@192.168.240.64 identified by "123456";

mysql> flush privileges; //立即生效

 

5.查看状态信息:

 

 

 

 

查看二进制日志:

复制前要保证同步的数据库一致:

[root@localhost ~]# scp HA.sql 192.168.240.64:/root/mysql-5.7

 

6.配置slave服务器:

安装MySQL:yum -y install ./mysql*.rpm

在mysql的配置文件/etc/my.cnf关闭密码强度审计插件,并重启mysql:

[root@localhost ~]# vim /etc/my.cnf

在这个配置文件中最后添加:

validate-password=OFF //不使用密码强度审计插件

systemctl restart mysqld //重启服务

 

[root@localhost ~]# grep 'password' /var/log/mysqld.log //获取临时密码

[root@localhost ~]# mysql -u root -p'6j?1e9&.p%E6' //使用临时密码登陆

mysql> set password for root@localhost = password('123456') //修改密码

mysql> flush privileges; //立即生效

mysql> quit;

7.两台数据库服务器版本要一致:

[root@localhost ~]# mysql -uroot -p //登陆mysql

mysql> show variables like '%version%'; //查看版本信息

+-------------------------+------------------------------+

| Variable_name | Value |

+-------------------------+------------------------------+

| innodb_version | 5.7.27 |

| protocol_version | 10 |

| slave_type_conversions | |

| tls_version | TLSv1,TLSv1.1 |

| version | 5.7.27 |

| version_comment | MySQL Community Server (GPL) |

| version_compile_machine | x86_64 |

| version_compile_os | Linux |

+-------------------------+------------------------------+

8.测试连接到master是否成功

[root@localhost ~]# mysql -uslave -p -h 192.168.240.63 远程登陆master端

ps:如果无法连接奇怪关闭master防火墙:systemctl stop firewall

9.在slave端创建要同步的测试HA数据,导入master的数据库文件

mysql> create database HA; //在slave上创建HA数据库

mysql> quit; /退出

[root@localhost mysql-5.7]# mysql -uroot -p HA<HA.sql //导入SQL文件到slave

10.修改slave服务器配置文件

[root@localhost mysql-5.7]# systemctl stop mysqld //停止mysql

[root@localhost mysql-5.7]# vim /etc/my.cnf //编辑配置文件

在最后添加一行:server-id=2 //这个是slaver的ID号,不能和master相同,如果还有slaver可以继续叠加,如server-id=3

[root@localhost mysql-5.7]# systemctl start mysqld //启动mysql

[root@localhost mysql-5.7]# mysql -uroot -p //登陆mysql

mysql> stop slave; //停止slave

mysql> change master to master_host='192.168.240.63',master_user='slave',master_password='123456'; //改变slave连接信息

mysql> start slave; /启动slave

mysql> show slave status\G //查看状态,执行结果如图所示:

如果上述两个均开启则成功

11.插入数据测试同步

在master端插入数据:

mysql> insert into T1 values (1,'man');

Query OK, 1 row affected (0.00 sec)

在slaver上查看:

mysql> select * from T1;

+------+------+

| id | name |

+------+------+

| 1 | man |

+------+------+

1 row in set (0.00 sec)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值