MySQL5.6主从复制(mysql数据同步配置)
2016-11-27 00:00
911 查看
规划
master 192.168.56.2
slave 192.168.56.5
1、在主库上,设置一个复制使用的账户rep1,并授予REPLICATION SLAVE权限。
mysql> grant replication slave on *.* to 'rep1'@'192.168.56.2' identified by '123456';
Query OK, 0 rows affected (0.01 sec)
2、修改主数据库服务器的配置文件my.cnf,开启BINLOG,并设置server-id的值。这两个参数的修改需要重新启动数据库服务才可以生效。
vi /etc/my.cnf
[mysqld]
log-bin=/home/mysql/log/mysql-bin.log
server-id=1
[root@rhel6 ~]# service mysql restart
Shutting down MySQL.. [ OK ]
Starting MySQL. [ OK ]
3、在主库上,设置读锁定有效,这个操作是为了确保没有数据库操作,以便获得一个一致性的快照。
mysql> flush tables with read lock;
Query OK, 0 rows affected (0.02 sec)
4、得到主库上当前的二进制日志名和偏移量值。这个操作的目的是为了从数据库启动以后,从这个点开始进行数据的恢复。
mysql> show master status;
+-----------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-----------------+----------+--------------+------------------+-------------------+
| mysqlbin.000021 | 120 | | | |
+-----------------+----------+--------------+------------------+-------------------+
1 row in set (0.03 sec)
5、现在主数据库服务器已经停止了更新操作,需要生成主数据库的备份,备份的方式有很多种,可以直接在操作系统下复制全部的数据文件到从数据库服务器上,也可以通过mysqldump导出数据或者使用ibbackup工具进行数据库的备份。如果主数据库的服务可以停止,那么直接复制数据文件应该是最快的生成快照的方法:
[root@rhel6 lib]# tar -zcvf mysql.tar.gz mysql
mysql/
tar: mysql/mysql.sock: socket ignored
mysql/mysqlbin.000019
mysql/test1/
mysql/test1/db.opt
mysql/test1/pack.MYD
mysql/test1/myisam2.frm
mysql/test1/emp.ibd
mysql/test1/mer_myisam.MRG
mysql/test1/emp.frm
mysql/test1/pri_t.TRG
....
传到从数据库
[root@rhel6 lib]# scp mysql.tar.gz root@192.168.56.5:/root
root@192.168.56.5's password:
mysql.tar.gz 100% 1402KB 1.4MB/s 00:00
6、主数据库备份完毕后可恢复写操作,剩下的只需要在从库上执行
mysql> unlock tables;
Query OK, 0 rows affected (0.02 sec)
7、将主数据库的一致性备份恢复到从数据库上。如果是使用.tar.gz打包的文件包,只需要解开到相应的目录即可。
tar -zxvf mysql.tar.gz
8、修改从数据库的配置文件my.cnf,增加server-id参数。注意server-id的值必须是唯一的,不能和主数据库的配置相同,如果有多个从数据库服务器,每个从数据库服务器必须有自己唯一的server-id值。
vi my.cnf
[mysqld]
server-id=2
9、在从库上,使用--skip-slave-start选项启动数据库,这样不会立即启动从数据库服务上的复制进程,方便我们对从数据库的服务进行进一步的配置(可选)
mysqld_safe --skip-slave-start &
或者修改my.cnf,添加skip-slave-start参数,service mysql start
10、对从数据库服务器做相应设置,指定复制使用的用户,主数据库服务器的IP、端口以及开始执行复制的日志文件和位置等
mysql> change master to
-> master_host='192.168.56.2',
-> master_user='rep1',
-> master_port=3306,
-> master_password='123456',
-> master_log_file='mysqlbin.000021',
-> master_log_pos=120;
Query OK, 0 rows affected, 2 warnings (0.08 sec)
11、在从库上,启动slave线程
mysql> start slave;
Query OK, 0 rows affected (0.17 sec)
12、从库上查看进程
mysql> show processlist \G;
*************************** 1. row ***************************
Id: 1
User: root
Host: localhost
db: zx
Command: Query
Time: 0
State: init
Info: show processlist
*************************** 2. row ***************************
Id: 4
User: system user
Host:
db: NULL
Command: Connect
Time: 1484
State: Waiting for master to send event
Info: NULL
*************************** 3. row ***************************
Id: 5
User: system user
Host:
db: NULL
Command: Connect
Time: 739
State: Slave has read all relay log; waiting for the slave I/O thread to update it
Info: NULL
3 rows in set (0.00 sec)
mysql> show slave status \G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.56.2
Master_User: rep1
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysqlbin.000021
Read_Master_Log_Pos: 652
Relay_Log_File: rhel6-relay-bin.000002
Relay_Log_Pos: 814
Relay_Master_Log_File: mysqlbin.000021
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 652
Relay_Log_Space: 987
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 1
Master_UUID: 3743271b-aa6d-11e6-aa2e-080027e5f5dd
Master_Info_File: /mysqldata/master.info
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it
Master_Retry_Count: 86400
Master_Bind:
Last_IO_Error_Timestamp:
Last_SQL_Error_Timestamp:
Master_SSL_Crl:
Master_SSL_Crlpath:
Retrieved_Gtid_Set:
Executed_Gtid_Set:
Auto_Position: 0
1 row in set (0.00 sec)
Slave_IO_Running和Slave_SQL_Running全部为YES才算搭建成功。如果出错查看报错原因。我搭建时遇到的两个错误:
(1)Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work.
原因:搭建时把主库整个目录复制过来的,主库和从库的UUID一致了,修改从库的UUID即可。
方法:修改$datadir/auto.cnf,按照16进制格式随便改一下,重启mysql即可。
(2)Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'Could not find first log file name in binary log index file'
原因:配置change master to时把master_log_file配置错误
方法:change master to master_log_file='mysqlbin.000021';start slave;即可。
13、测试复制的正确性
主库
mysql> create database zx;
Query OK, 1 row affected (0.05 sec)
mysql> use zx;
Database changed
mysql> create table t(id int);
Query OK, 0 rows affected (0.09 sec)
mysql> insert into t values(1),(2),(3);
Query OK, 3 rows affected (0.01 sec)
Records: 3 Duplicates: 0 Warnings: 0
从库
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| data |
| mysql |
| performance_schema |
| test |
| test1 |
| zx |
+--------------------+
7 rows in set (0.00 sec)
mysql> use zx
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> select * from t;
+------+
| id |
+------+
| 1 |
| 2 |
| 3 |
+------+
3 rows in set (0.00 sec)
MYSQL5 masterslave数据同步配置方法
怎么使 Mysql 数据同步
mysql 5.7 docker 主从复制架构搭建教程
mysql数据库 主从复制的配置方法
mysql 5.6.14主从复制(也称mysql AB复制)环境配置方法
mysql5.6 主从复制同步详细配置(图文)
MySQL5.6 Replication主从复制(读写分离) 配置完整版
MySQL的主从复制步骤详解及常见错误解决方法
MySQL5.6基于GTID的主从复制
master 192.168.56.2
slave 192.168.56.5
1、在主库上,设置一个复制使用的账户rep1,并授予REPLICATION SLAVE权限。
mysql> grant replication slave on *.* to 'rep1'@'192.168.56.2' identified by '123456';
Query OK, 0 rows affected (0.01 sec)
2、修改主数据库服务器的配置文件my.cnf,开启BINLOG,并设置server-id的值。这两个参数的修改需要重新启动数据库服务才可以生效。
vi /etc/my.cnf
[mysqld]
log-bin=/home/mysql/log/mysql-bin.log
server-id=1
[root@rhel6 ~]# service mysql restart
Shutting down MySQL.. [ OK ]
Starting MySQL. [ OK ]
3、在主库上,设置读锁定有效,这个操作是为了确保没有数据库操作,以便获得一个一致性的快照。
mysql> flush tables with read lock;
Query OK, 0 rows affected (0.02 sec)
4、得到主库上当前的二进制日志名和偏移量值。这个操作的目的是为了从数据库启动以后,从这个点开始进行数据的恢复。
mysql> show master status;
+-----------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-----------------+----------+--------------+------------------+-------------------+
| mysqlbin.000021 | 120 | | | |
+-----------------+----------+--------------+------------------+-------------------+
1 row in set (0.03 sec)
5、现在主数据库服务器已经停止了更新操作,需要生成主数据库的备份,备份的方式有很多种,可以直接在操作系统下复制全部的数据文件到从数据库服务器上,也可以通过mysqldump导出数据或者使用ibbackup工具进行数据库的备份。如果主数据库的服务可以停止,那么直接复制数据文件应该是最快的生成快照的方法:
[root@rhel6 lib]# tar -zcvf mysql.tar.gz mysql
mysql/
tar: mysql/mysql.sock: socket ignored
mysql/mysqlbin.000019
mysql/test1/
mysql/test1/db.opt
mysql/test1/pack.MYD
mysql/test1/myisam2.frm
mysql/test1/emp.ibd
mysql/test1/mer_myisam.MRG
mysql/test1/emp.frm
mysql/test1/pri_t.TRG
....
传到从数据库
[root@rhel6 lib]# scp mysql.tar.gz root@192.168.56.5:/root
root@192.168.56.5's password:
mysql.tar.gz 100% 1402KB 1.4MB/s 00:00
6、主数据库备份完毕后可恢复写操作,剩下的只需要在从库上执行
mysql> unlock tables;
Query OK, 0 rows affected (0.02 sec)
7、将主数据库的一致性备份恢复到从数据库上。如果是使用.tar.gz打包的文件包,只需要解开到相应的目录即可。
tar -zxvf mysql.tar.gz
8、修改从数据库的配置文件my.cnf,增加server-id参数。注意server-id的值必须是唯一的,不能和主数据库的配置相同,如果有多个从数据库服务器,每个从数据库服务器必须有自己唯一的server-id值。
vi my.cnf
[mysqld]
server-id=2
9、在从库上,使用--skip-slave-start选项启动数据库,这样不会立即启动从数据库服务上的复制进程,方便我们对从数据库的服务进行进一步的配置(可选)
mysqld_safe --skip-slave-start &
或者修改my.cnf,添加skip-slave-start参数,service mysql start
10、对从数据库服务器做相应设置,指定复制使用的用户,主数据库服务器的IP、端口以及开始执行复制的日志文件和位置等
mysql> change master to
-> master_host='192.168.56.2',
-> master_user='rep1',
-> master_port=3306,
-> master_password='123456',
-> master_log_file='mysqlbin.000021',
-> master_log_pos=120;
Query OK, 0 rows affected, 2 warnings (0.08 sec)
11、在从库上,启动slave线程
mysql> start slave;
Query OK, 0 rows affected (0.17 sec)
12、从库上查看进程
mysql> show processlist \G;
*************************** 1. row ***************************
Id: 1
User: root
Host: localhost
db: zx
Command: Query
Time: 0
State: init
Info: show processlist
*************************** 2. row ***************************
Id: 4
User: system user
Host:
db: NULL
Command: Connect
Time: 1484
State: Waiting for master to send event
Info: NULL
*************************** 3. row ***************************
Id: 5
User: system user
Host:
db: NULL
Command: Connect
Time: 739
State: Slave has read all relay log; waiting for the slave I/O thread to update it
Info: NULL
3 rows in set (0.00 sec)
mysql> show slave status \G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.56.2
Master_User: rep1
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysqlbin.000021
Read_Master_Log_Pos: 652
Relay_Log_File: rhel6-relay-bin.000002
Relay_Log_Pos: 814
Relay_Master_Log_File: mysqlbin.000021
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 652
Relay_Log_Space: 987
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 1
Master_UUID: 3743271b-aa6d-11e6-aa2e-080027e5f5dd
Master_Info_File: /mysqldata/master.info
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it
Master_Retry_Count: 86400
Master_Bind:
Last_IO_Error_Timestamp:
Last_SQL_Error_Timestamp:
Master_SSL_Crl:
Master_SSL_Crlpath:
Retrieved_Gtid_Set:
Executed_Gtid_Set:
Auto_Position: 0
1 row in set (0.00 sec)
Slave_IO_Running和Slave_SQL_Running全部为YES才算搭建成功。如果出错查看报错原因。我搭建时遇到的两个错误:
(1)Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work.
原因:搭建时把主库整个目录复制过来的,主库和从库的UUID一致了,修改从库的UUID即可。
方法:修改$datadir/auto.cnf,按照16进制格式随便改一下,重启mysql即可。
(2)Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'Could not find first log file name in binary log index file'
原因:配置change master to时把master_log_file配置错误
方法:change master to master_log_file='mysqlbin.000021';start slave;即可。
13、测试复制的正确性
主库
mysql> create database zx;
Query OK, 1 row affected (0.05 sec)
mysql> use zx;
Database changed
mysql> create table t(id int);
Query OK, 0 rows affected (0.09 sec)
mysql> insert into t values(1),(2),(3);
Query OK, 3 rows affected (0.01 sec)
Records: 3 Duplicates: 0 Warnings: 0
从库
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| data |
| mysql |
| performance_schema |
| test |
| test1 |
| zx |
+--------------------+
7 rows in set (0.00 sec)
mysql> use zx
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> select * from t;
+------+
| id |
+------+
| 1 |
| 2 |
| 3 |
+------+
3 rows in set (0.00 sec)
您可能感兴趣的文章:
mysql 备份与迁移 数据同步方法MYSQL5 masterslave数据同步配置方法
怎么使 Mysql 数据同步
mysql 5.7 docker 主从复制架构搭建教程
mysql数据库 主从复制的配置方法
mysql 5.6.14主从复制(也称mysql AB复制)环境配置方法
mysql5.6 主从复制同步详细配置(图文)
MySQL5.6 Replication主从复制(读写分离) 配置完整版
MySQL的主从复制步骤详解及常见错误解决方法
MySQL5.6基于GTID的主从复制
相关文章推荐
- MySQL5.6主从复制(mysql数据同步配置)
- mysql5.6 主从复制同步详细配置(图文)
- mysql5.6 主从复制同步详细配置(图文)
- 运维工程师必备之MySQL数据的主从复制、半同步复制和主主复制详解
- MySQL数据的主从复制、半同步复制和主主复制详解
- mysql5.5主从同步复制配置
- mysql5.6配置同步复制的新方法以及常见问题的解决方法
- MySQL主从replication半同步设置及支持基于ssl复制配置
- mysql主从复制、半同步复制、基于ssl的复制配置过程
- mysql主从复制-mysql5.6配置主从复制
- MySQL数据的主从复制、半同步复制和主主复制详解
- MySQL主从复制----半同步与异步的配置
- Linux下MySQL主从同步复制详细配置
- mysql主从同步复制的配置
- InnoSQL HA Suite的实现原理与配置说明 InnoSQL的VSR功能Virtual Sync Replication MySQL 5.5版本引入了半同步复制(semi-sync replicaiton)的功能 MySQL 5.6支持了crash safe功能
- MySQL5.6 主从复制配置
- Mysql 5.6 基于GTID的主从复制及使用Amoeba配置读写分离
- mysql5.6 主从复制,详细配置
- 烂泥:mysql5.5主从同步复制配置
- mysql 5.5.21 window下配置主从数据同步