mysql主从+双主配置
环境
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,就表明主从有异常