0
点赞
收藏
分享

微信扫一扫

如何实现CDH元数据库MySQL的主主互备

温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。


Fayson的github:https://github.com/fayson/cdhproject


提示:代码块部分可以左右滑动查看噢


1.文档编写目的



在前面Fayson讲过《​​如何实现CDH元数据库MySQL的主备​​》,而本篇文章介绍如何实现MySQL的双活方式,为后面基于Keepalived实现MySQL高可用做铺垫。


  • 内容概括

1.MySQLA和MySQLB配置

2.构建主主同步

3.主主互备验证


  • 测试环境

1.两台Linux服务器(172.31.6.148/172.31.5.190),操作系统为CentOS6.5

2.MySQL5.1.73

3.采用root用户操作


  • 前置条件

1.两个MySQL版本必须一致

2.两个MySQL已安装


2.测试环境说明



IP地址

状态

别名

172.31.6.148

已安装,且有生产数据

MySQLA

172.31.5.190

新装无任何数据

MySQLB


以上是Fayson的CDH集群元数据的使用情况,这里我们需要停止所有对MySQLA的读写操作,然后配置后两个集群的主主同步,这里数据库别名是为了后面在讲述的时候区别。


3.MySQLA配置



1.创建MySQL同步账号


GRANT REPLICATION SLAVE ON *.* TO 'mysqla'@'172.31.%' IDENTIFIED BY 'mysqla';


如何实现CDH元数据库MySQL的主主互备_数据


该同步账号主要是给MySQLB使用。


2.开启MySQLA的binlog,在/etc/my.conf中增加如下配置


[root@ip-172-31-6-148 ~]# vim /etc/my.cnf [mysqld]datadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.sockuser=mysql# Disabling symbolic-links is recommended to prevent assorted security riskssymbolic-links=0server-id=148log-bin=mysql-binbinlog_format=MIXED
read-only=0auto-increment-increment=10auto-increment-offset=1
[mysqld_safe]log-error=/var/log/mysqld.logpid-file=/var/run/mysqld/mysqld.pid


黄底部分前三行Fayson之前的文章已描述过,后面三个参数说明:


read-only:标识数据库是否为只读,这里我们设置为0即非只读,该参数针对用户没有SUPER权限设置。


auto-increment-increment和auto-increment-offset这两个参数主要控制MySQL自增列的值,用于Master-Master之间的复制,防止出现重复值。做了如上配置后,我们向该MySQLA服务中插入第一个id就是1,第二行的id就是11,而不是2,那么在MySQLB服务插入第一个id就是2,第二行的id就是12,这样就不会出现主键冲突。


3.保存配置,并重启MySQL


[root@ip-172-31-6-148 ~]# service mysqld restart


如何实现CDH元数据库MySQL的主主互备_mysql_02


4.导出MySQLA数据库的全部数据


[root@ip-172-31-6-148 ~]# mysqldump -uroot -p --events  --all-databases > all.dump


如何实现CDH元数据库MySQL的主主互备_数据_03


由于Fayson的MySQLA数据库中已经有数据了,所以需要将库中的数据导出,将导出的数据导入到MySQLB中,如果MySQLA为新装数据库则可以跳过此步。

将数据拷贝至MySQLB服务上


[root@ip-172-31-6-148 ~]# scp all.dump ip-172-31-5-190.fayson.com:/root/


如何实现CDH元数据库MySQL的主主互备_数据_04


4.MySQLB配置



1.创建MySQL同步账号


GRANT REPLICATION SLAVE ON *.* TO 'mysqlb'@'172.31.%' IDENTIFIED BY 'mysqlb';


如何实现CDH元数据库MySQL的主主互备_数据库_05


该同步账号主要是给MySQLA使用。


2.修改/etc/my.conf配置,内容如下


[root@ip-172-31-5-190 /]# vim /etc/my.cnfread-only=0auto-in[mysqld]datadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.sockuser=mysql# Disabling symbolic-links is recommended to prevent assorted security riskssymbolic-links=0server-id=190log-bin=mysql-binbinlog_format=MIXED
relay_log=mysql-relay-binlog-slave-updates=ON
read-only=0auto-increment-increment=10auto-increment-offset=2
[mysqld_safe]log-error=/var/log/mysqld.logpid-file=/var/run/mysqld/mysqld.pid


如何实现CDH元数据库MySQL的主主互备_mysql_06


3.保存配置,然后重新MySQLB


[root@ip-172-31-5-190 /]# service mysqld restart


如何实现CDH元数据库MySQL的主主互备_数据_07


4.导入MySQLA库数据,如果无数据则跳过此步


[root@ip-172-31-5-190 ~]# mysql -uroot -p <all.dump


如何实现CDH元数据库MySQL的主主互备_数据_08


确认数据是否导入成功


如何实现CDH元数据库MySQL的主主互备_mysql_09


5.配置MySQLA->MySQLB同步



1.登录MySQLA查看master状态,提示:代码块部分可以左右滑动查看噢


[root@ip-172-31-6-148 ~]# mysql -uroot -p
Enter password:
...
mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000042 | 8536 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
mysql>


如何实现CDH元数据库MySQL的主主互备_mysql_10


2.登录MySQLB,执行如下同步命令


change master to
master_host='172.31.6.148',
master_user='mysqla',
master_password='mysqla',
master_log_file='mysql-bin.000042',
master_log_pos=8536;


如何实现CDH元数据库MySQL的主主互备_数据_11


3.在MySQLB库中执行启动同步命令


mysql> start slave;Query OK, 0 rows affected (0.00 sec)

mysql>


如何实现CDH元数据库MySQL的主主互备_mysql_12


4.在MySQLB中执行如下命令,查看是否配置成功


mysql> show slave status \G


如何实现CDH元数据库MySQL的主主互备_数据库_13


如上图标注则表示配置成功。


6.配置MySQLB->MySQLA同步



1.登录MySQLB查看master状态,提示:代码块部分可以左右滑动查看噢


[root@ip-172-31-5-190 ~]# mysql -uroot -p
Enter password:
...
mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000005 | 76841237 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
mysql>


如何实现CDH元数据库MySQL的主主互备_mysql_14


2.登录MySQLA数据库执行如下同步命令


change master to
master_host='172.31.5.190',
master_user='mysqlb',
master_password='mysqlb',
master_log_file='mysql-bin.000005',
master_log_pos=76841237;


如何实现CDH元数据库MySQL的主主互备_数据库_15


3.在MySQLA库中执行启动同步命令


mysql> start slave;Query OK, 0 rows affected (0.00 sec)

mysql>


如何实现CDH元数据库MySQL的主主互备_数据_16


4.登录MySQLA验证同步命令是否执行成功


如何实现CDH元数据库MySQL的主主互备_数据_17


有上图标注则表示启动成功。


7.主主互备验证



1.登录MySQLA数据库创建test库


如何实现CDH元数据库MySQL的主主互备_数据库_18


2.登录MySQLB数据库查看是否有test库


如何实现CDH元数据库MySQL的主主互备_数据_19


在MySQLB数据库中可以看到在MySQLA上创建的test库。


3.在MySQLB数据库中将test库删除


如何实现CDH元数据库MySQL的主主互备_mysql_20


4.登录MySQLA数据库,查看test库是否存在


如何实现CDH元数据库MySQL的主主互备_mysql_21


可以看到MySQLA数据库中已不存在test库。


  • MySQL配置参数说明



为天地立心,为生民立命,为往圣继绝学,为万世开太平。

温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。



推荐关注Hadoop实操,第一时间,分享更多Hadoop干货,欢迎转发和分享。

如何实现CDH元数据库MySQL的主主互备_数据库_22

原创文章,欢迎转载,转载请注明:转载自微信公众号Hadoop实操


举报

相关推荐

0 条评论