下面是MySQL5.6主从复制(mysql数据同步配置)的完整攻略:
什么是MySQL主从复制?
MySQL主从复制是一种常用的数据同步技术,可以将一个MySQL数据库的数据复制到其他MySQL实例中。在主从复制中,一个数据库被标记为“主数据库”,其他数据被标记为“从数据库”。在主数据库上发生的任何更改都将自动从主数据库传输到从数据库,确保从数据库的数据与主数据库的数据保持一致。
如何进行MySQL主从复制?
MySQL主从复制需要进行以下几个步骤:
1. 准备主数据库
在主数据库上,需要做以下准备工作:
1.1 配置MySQL
在主数据库上,需要编辑MySQL配置文件my.cnf,将以下配置添加到[mysqld]部分下:
server-id=1
log-bin=mysql-bin
binlog-do-db=dbname
binlog-ignore-db=mysql
其中,server-id用于唯一标识主从复制中的主数据库,log-bin选项启用二进制日志记录,binlog-do-db选项指定需要同步的数据库,而binlog-ignore-db选项则指定不需要同步的数据库。
1.2 创建复制账户
在主数据库上,需要创建一个专门用于复制的账户。可以使用以下命令创建账户:
mysql> CREATE USER 'replicant'@'slave.ip.address' IDENTIFIED BY 'password';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'replicant'@'slave.ip.address';
其中,replicant是复制账户的用户名,slave.ip.address是从数据库的IP地址,password是复制账户的密码。
1.3 查看主数据库状态
在主数据库上,使用以下命令查看主数据库状态:
mysql> SHOW MASTER STATUS;
该命令将返回当前主数据库位置的文件名和位置。
2. 准备从数据库
在从数据库上,需要做以下准备工作:
2.1 配置MySQL
在从数据库上,需要编辑MySQL配置文件my.cnf,将以下配置添加到[mysqld]部分下:
server-id=2
其中,server-id用于唯一标识主从复制中的从数据库。
2.2 启动复制线程
在从数据库上,需要使用以下命令启动复制线程:
mysql> CHANGE MASTER TO
-> MASTER_HOST='master.ip.address',
-> MASTER_USER='replicant',
-> MASTER_PASSWORD='password',
-> MASTER_LOG_FILE='mysql-bin.000001',
-> MASTER_LOG_POS=120;
mysql> START SLAVE;
其中,master.ip.address是主数据库的IP地址,replicant是复制账户的用户名,password是复制账户的密码,mysql-bin.000001和120是在主数据库上执行SHOW MASTER STATUS命令返回的文件名和位置。
3. 验证主从复制
完成以上步骤后,可以进行以下验证:
3.1 在主数据库上插入一条数据
在主数据库上,可以使用以下命令插入一条数据:
mysql> USE dbname;
mysql> INSERT INTO table1 (id, name) VALUES (1, 'Alice');
3.2 查看从数据库上的数据
在从数据库上,可以使用以下命令查看数据是否已经同步:
mysql> USE dbname;
mysql> SELECT * FROM table1;
该命令将返回刚才在主数据库上插入的数据。
示例
下面是两个示例,用于演示MySQL主从复制的使用。
示例1
在本示例中,将创建一个主数据库,在主数据库上插入一条数据,并将从数据库复制该数据。
1. 创建主数据库
在主数据库上,使用以下命令创建一个数据库并切换到该数据库:
mysql> CREATE DATABASE dbname;
mysql> USE dbname;
2. 创建数据表
在主数据库上,使用以下命令创建一个数据表:
mysql> CREATE TABLE table1 (
-> id int(11) NOT NULL AUTO_INCREMENT,
-> name varchar(50) DEFAULT NULL,
-> PRIMARY KEY (id)
-> ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
3. 配置主数据库
在主数据库上,将以下配置添加到MySQL配置文件my.cnf中:
server-id=1
log-bin=mysql-bin
binlog-do-db=dbname
binlog-ignore-db=mysql
4. 创建复制账户
在主数据库上,创建一个复制账户:
mysql> CREATE USER 'replicant'@'slave.ip.address' IDENTIFIED BY 'password';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'replicant'@'slave.ip.address';
5. 查看主数据库状态
在主数据库上,使用以下命令查看主数据库的状态:
mysql> SHOW MASTER STATUS;
应该返回如下结果:
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 120 | dbname | mysql |
+------------------+----------+--------------+------------------+
6. 配置从数据库
在从数据库上,将以下配置添加到MySQL配置文件my.cnf中:
server-id=2
7. 启动复制线程
在从数据库上,使用以下命令启动复制线程:
mysql> CHANGE MASTER TO
-> MASTER_HOST='master.ip.address',
-> MASTER_USER='replicant',
-> MASTER_PASSWORD='password',
-> MASTER_LOG_FILE='mysql-bin.000001',
-> MASTER_LOG_POS=120;
mysql> START SLAVE;
8. 插入数据
在主数据库上,使用以下命令插入一条数据:
mysql> USE dbname;
mysql> INSERT INTO table1 (id, name) VALUES (1, 'Alice');
9. 验证数据同步
在从数据库上,使用以下命令查看数据是否已经同步:
mysql> USE dbname;
mysql> SELECT * FROM table1;
如果一切正常,该命令将返回刚才在主数据库上插入的数据。
示例2
在本示例中,将创建一个包含多个从数据库的主数据库,并将主数据库上的数据复制到每个从数据库中。
1. 创建主数据库
在主数据库上,使用以下命令创建一个数据库并切换到该数据库:
mysql> CREATE DATABASE dbname;
mysql> USE dbname;
2. 创建数据表
在主数据库上,使用以下命令创建一个数据表:
mysql> CREATE TABLE table1 (
-> id int(11) NOT NULL AUTO_INCREMENT,
-> name varchar(50) DEFAULT NULL,
-> PRIMARY KEY (id)
-> ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
3. 配置主数据库
在主数据库上,将以下配置添加到MySQL配置文件my.cnf中:
server-id=1
log-bin=mysql-bin
binlog-do-db=dbname
binlog-ignore-db=mysql
4. 创建复制账户
在主数据库上,创建一个复制账户:
mysql> CREATE USER 'replicant'@'%' IDENTIFIED BY 'password';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'replicant'@'%';
5. 查看主数据库状态
在主数据库上,使用以下命令查看主数据库的状态:
mysql> SHOW MASTER STATUS;
6. 配置从数据库
在从数据库上,将以下配置添加到MySQL配置文件my.cnf中:
server-id=2
7. 启动复制线程
在从数据库上,使用以下命令启动复制线程:
mysql> CHANGE MASTER TO
-> MASTER_HOST='master.ip.address',
-> MASTER_USER='replicant',
-> MASTER_PASSWORD='password',
-> MASTER_LOG_FILE='mysql-bin.000001',
-> MASTER_LOG_POS=120;
mysql> START SLAVE;
8. 配置其他从数据库
对于其他从数据库,重复步骤6和7即可。
9. 插入数据
在主数据库上,使用以下命令插入一条数据:
mysql> USE dbname;
mysql> INSERT INTO table1 (id, name) VALUES (1, 'Alice');
10. 验证数据同步
在每个从数据库上,使用以下命令查看数据是否已经同步:
mysql> USE dbname;
mysql> SELECT * FROM table1;
如果一切正常,每个命令将返回刚才在主数据库上插入的数据。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:MySQL5.6主从复制(mysql数据同步配置) - Python技术站