mysql主从+双主配置
young / / / 阅读量

环境

centos 6.5

mysql5.6.41

master: 192.168.2.179

slave:192.168.2.252

安装

怎么安装mysql数据库,这里不说了,只说它的主从复制,步骤如下:

主从服务器分别作以下操作:

版本一致
初始化表,并在后台启动mysql
修改root的密码

配置文件修改

#-------------------- replication settting --------------------

#二进制日志
log-bin=master-bin
log-bin-index=master-bin.index

# sync_binlog=N,使执行N次写入后,与硬盘同步。1是最安全的,但是也是最慢的。
sync_binlog=5
# sync_relay_log=N,使执行N次写入后,与硬盘同步,默认是10000
sync_relay_log=1000

#当slave宕机后,relay-log损坏了,导致一部分中继日志没有处理,则自动放弃所有未执行的relay-log,并且重新从master上获取日志,保证了relay-log的完整性。默认情况下该功能是关闭的,可在slave从库上开启该功能,建议开启。
relay_log_recovery = 1

#复制过滤:不需要备份的数据库(MySQL库一般不同步)
replicate-wild-ignore-table = mysql.%
replicate-wild-ignore-table = information\_schema.%
replicate-wild-ignore-table = sys.%
replicate-wild-ignore-table = performance\_schema.%

# 服务器的ID,必须唯一,一般设置自己的IP(主从不同)
server_id=2179

#值设为整个结构中服务器的总数,此实验为两台服务器,所以值为2     
auto-increment-increment = 2  

#用来设定数据库中自动增长的起点的,每个服务的起点必须得不同,这样才能避免服务器数据同步时出现主键冲突
auto-increment-offset = 1   

#slave-skip-errors的作用就是用来定义复制过程中从服务器可以自动跳过的错误号,当复制过程中遇到定义的错误号,就可以自动跳过,直接执行后面的SQL语句,有四个可用值,分别为:off,all,ErorCode,ddl_exist_errors。
#默认情况下该参数值是off,我们可以列出具体的error code,也可以选择all,mysql5.6及MySQL Cluster NDB 7.3以及后续版本增加了参数ddl_exist_errors,该参数包含一系列error                     
slave-skip-errors = ddl_exist_errors

#将master.info和relay.info保存在表中
master_info_repository = TABLE
relay_log_info_repository = TABLE

#设置清除日志时间
expire_logs_days=7

#binlog 日志格式
binlog_format=MIXED

重启mysql

[root@localhost]# /etc/init.d/mysql restart

配置主从

master操作

在主服务器上建立帐户并授权slave:

GRANT replication client, REPLICATION SLAVE ON *.* to 'sync'@'192.168.2.%' identified by 'SyNc_0920'

登录主服务器的mysql,查询master的状态

mysql>show master status;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000004 |      308 |              |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

注:执行完此步骤后不要再操作主服务器MYSQL,防止主服务器状态值变化

slave操作

配置从服务器Slave:

mysql> change master to master_host='192.168.2.179',master_user='sync',master_password='SyNc_0920', master_log_file='mysql-bin.000004',master_log_pos=308;
Mysql>start slave;   

检查从服务器复制功能状态:

主要观察以下参数

mysql> show slave status\G
********* 1. row *********
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.2.222  //主服务器地址
Master_User: mysync   //授权帐户名,尽量避免使用root
Master_Port: 3306    //数据库端口,部分版本没有此行
Connect_Retry: 60
Slave_IO_Running: Yes    //此状态必须YES
Slave_SQL_Running: Yes     //此状态必须YES
......

注:Slave_IO及Slave_SQL进程必须正常运行,即YES状态,否则都是错误的状态(如:其中一个NO均属错误)。
以上操作过程,主从服务器配置完成。

配置双主

将配置主从的 步骤进行逆向配置即可

主从服务器测试

主服务器Mysql,建立数据库,并在这个库中建表插入一条数据:

mysql> create database hi_db;
Query OK, 1 row affected (0.00 sec)

mysql> use hi_db;
Database changed

mysql>  create table hi_tb(id int(3),name char(10));
Query OK, 0 rows affected (0.00 sec)

mysql> insert into hi_tb values(001,'bobu');
Query OK, 1 row affected (0.00 sec)
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| hi_db                |
| mysql                |
| test                 |
+--------------------+
4 rows in set (0.00 sec)

从服务器Mysql查询:

mysql> show databases;
+--------------------+
| Database               |
+--------------------+
| information_schema |
| hi_db                 |       
| mysql                 |
| test          |
+--------------------+
4 rows in set (0.00 sec)
mysql> use hi_db
Database changed
mysql> select * from hi_tb;           
+------+------+
| id   | name |
+------+------+
|    1 | bobu |
+------+------+
1 row in set (0.00 sec)

监控

编写一shell脚本,监控slave的两个yes(Slave_IO及Slave_SQL进程),如发现只有一个或零个yes,就表明主从有异常

支付宝捐赠
请使用支付宝扫一扫进行捐赠
微信捐赠
请使用微信扫一扫进行赞赏
有 0 篇文章