mysql

Mysql主从双机热备

最近学习Mysql主从热备,记录学习过程。实现方法主要是通过Mysql自带的REPLICATION来实现。

主从环境设置

主服务器Master:192.168.18.100
从服务器Slave:192.168.18.200
数据库版本:mysql5.7(docker运行)
主从数据库初始设置:主服务器Master备份待同步的数据库blog,还原到从服务器Slave

主服务器Master设置

创建同步账户并授予REPLICATION SLAVE权限

mysql> grant replication slave on *.* to 'replicate'@'192.168.18.200' identified by '123456';
mysql> flush privileges;

创建成功后在从服务器Slave上用账户replicate账号对主服务器Master的数据库进行测试访问:

[root@hmgerovps ~]# mysql -h192.168.18.100 -ureplicate -p123456

如果成功登录说明账号创建成功。

修改Mysql配置文件my.cnf

docker版的mysql并没有生成配置文件my.cnf。
解决办法就是在/etc目录下生成一个:vim /etc/my.cnf
在配置文件中写入如下代码:

[mysqld]
server-id = 1
log-bin=mysql-bin              //其中这两行是本来就有的,可以不用动,添加下面两行即可 
binlog-do-db = ghost_prod      //要同步的数据库
binlog-ignore-db = mysql       //忽略的数据库

重启mysql

查看主服务器master状态

mysql> show master status\G;

show-master

注意File和Position两个参数,在配置从服务器Slave的时候会用到

从服务器Slave设置

修改Mysql配置文件

从服务器slave同样是docker版的mysql,配置文件生成方法和主服务器一样,配置内容如下

[mysqld]
server-id = 2
log-bin=mysql-bin                //其中这两行是本来就有的,可以不用动,添加下面两行即可 
replicate-do-db = ghost_prod          //要同步的数据库
replicate-ignore-db = mysql      //忽略的数据库

重启mysql

用change mster命令指定同步位置

mysql> stop slave;          //先停步slave服务线程,这个是很重要的,如果不这样做会造成以下操作不成功。
mysql> change master to master_host='192.168.18.100',
     >master_user='replicate',
     >master_password='123456',
     > master_log_file=' mysql-bin.000003 ',
     > master_log_pos=7813;
mysql> start slave;

注:masterlogfile, masterlogpos由主服务器(Master)查出的状态值中确定。masterlogfile对应File, masterlogpos对应Position。

查看从服务器状态

mysql> show slave status\G;

slave
如果蓝色框框中的两项值均为Yes,则表示配置成功。

测试同步

可以在主服务器中插入测试数据,然后在从服务器中查看是否有同步的数据,具体步骤不做详述。

若你觉得我的文章对你有帮助,欢迎点击上方按钮对我打赏

扫描二维码,分享此文章