http://blog.yiranzai.cn/posts/5420/
请大家收藏保存,用电脑看。或者访问原文链接
文末有MySQL主主复制配置方法

事情事理图:
主从复制
主从复制的事理:分为同步复制和异步复制,实际复制架构中大部分为异步复制。 复制的基本过程如下:
Slave上面的IO进程连接上Master,并要求从指定日志文件的指定位置(或者从最开始的日志)之后的日志内容;
Master吸收到来自Slave的IO进程的要求后,通过卖力复制的IO进程根据要求信息读取制订日志指定位置之后的日志信息,返回给Slave 的IO进程。返复书息中除了日志所包含的信息之外,还包括本次返回的信息已经到Master真个bin-log文件的名称以及bin-log的位置;
Slave的IO进程吸收到信息后,将吸收到的日志内容依次添加到Slave真个relay-log文件的最末端,并将读取到的Master真个 bin-log的文件名和位置记录到master-info文件中,以便不才一次读取的时候能够清楚的见告Master“我须要从某个bin-log的哪个位置开始今后的日志内容,请发给我”;
Slave的Sql进程检测到relay-log中新增加了内容后,会立时解析relay-log的内容成为在Master端真实实行时候的那些可实行的内容,并在自身实行。
环境描述
操作系统:CentOS 7.4 1708
主理事器master:192.168.0.123
从做事器slave:192.168.0.124
Mysql主从复制主从安装mysql,版本同等安装Mysql请参考
我这里的版本都是安装的Mysql 5.6.38
安装完毕记得启动,以及开放Mysql端口
123
$ systemctl start mysqld.service$ firewall-cmd --zone=public --add-port=80/tcp --permanent$ firewall-cmd --reload修正master,slave做事器
123456789101112131415
master做事器配置:$ vim /etc/my.cnf[mysqld]server-id=1 log-bin=mysql-bin # 启用二进制日志slave做事器配置:$ vim /etc/my.cnf[mysqld]log_bin = mysql-binserver_id = 2relay_log = mysql-relay-binlog_slave_updates = 1read_only = 1slave-skip-errors = all #忽略因复制涌现的所有缺点重启主从做事器mysql
1
systemctl restart mysqld.service在主理事器上建立帐户并授权slave
123
mysql> mysql -u root -pmysql> GRANT REPLICATION SLAVE ON . to ‘user’@‘192.168.0.124’ identified by ‘password’;mysql> FLUSH PRIVILEGES;
如果主理事器已经存在运用数据,则在进行主从复制时,须要先做以下处理:
主数据库进行锁表操作,不让数据再进行写入动作
1
mysql> FLUSH TABLES WITH READ LOCK;
查看主数据库状态
1
mysql> show master status;
复制数据文件
将主理事器的数据文件(全体/var/lib//mysql/data目录)复制到从做事器,建议通过tar归档压缩后再传到从做事器解压。
取消主数据库锁定
1
mysql> UNLOCK TABLES;查看主数据库状态
1234567
mysql> show maser status;+------------------+----------+--------------+------------------+-------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |+------------------+----------+--------------+------------------+-------------------+| mysql-bin.000004 | 24364 | | | |+------------------+----------+--------------+------------------+-------------------+1 row in set (0.02 sec)
File和Position已经要记下来,后面要用到。
配置从数据库123456
mysql> change master to-> master_host='192.168.0.123',-> master_user='user',-> master_password='password',-> master_log_file='mysql-bin.000004',-> master_log_pos=24364;启动slave同步进程并查看状态
12345678910111213141516
mysql> start slave;mysql> show slave status \G; 1. row Slave_IO_State: Waiting for master to send event Master_Host: 192.169.0.123 Master_User: user Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000004 Read_Master_Log_Pos: 24364 Relay_Log_File: mysql-relay-bin.000292 Relay_Log_Pos: 283 Relay_Master_Log_File: mysql-bin.000004 Slave_IO_Running: Yes Slave_SQL_Running: Yes...
个中Slave_IO_Running 与 Slave_SQL_Running 的值都必须为YES,才表明状态正常。
验证主从同步主理事器上的操作
在主理事器上创建数据库data
12
mysql> create database data;Query Ok, 1 row affected (0.01 sec)
在主理事器上创建表user
12
mysql> create table user(id int(3),name char(10));Query Ok, 1 row affected (0.00 sec)
在主理事器上的表user中插入记录
12
mysql> insert into user values (001,’adcdef’);Query Ok, 1 row affected (0.00 sec)
在从做事器上查看
1234567891011121314151617181920212223242526272829303132
mysql> show databases;+--------------------+| Database |+--------------------+| information_schema || mysql || performance_schema || data |+--------------------+4 rows in set (0.01 sec)# 数据库data已经自动天生mysql> use dataDatabase chagedmysql> show tables;+--------------------+| Tables_in_data |+--------------------+| user |+--------------------+1 row in set (0.02 sec)# 数据库表user也已经自动创建mysql> select from user;+------+------+| id | name |+------+------+| 1 | abcdef |+------+------+1 rows in set (0.00 sec)# 记录也已经存在
用PHP还在纠结大文件处理?快来学习天生器
Yum安装lanmp,便是大略
CentOS 7 svn利用总结
MySQL主主复制并实现高可用