MySQL运维一:主从同步
一、配置主服务器
1.mysql配置文件
root@bird:~$ vim /etc/mysql/my.cnf
[mysqld]
# 开启binlog功能
log-bin=mysql-bin
# 设置唯一id
server-id=1
# 指定需要同步的数据库,不写会同步所有
binlog-do-db=dbname2
# 防止主键冲突(主主同步中会用到)
# 主键增量
auto-increment-increment=1
# 主键开始位置
auto-increment-offset=1
重启mysql服务即可生效。
// 重启mysql
root@bird:~$ service mysql stop && service mysql start
2.在主服务器上创建账号
mysql> CREATE USER 'repl'@'%' IDENTIFIED BY 'passwd';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
3.数据库导出
// 导出指定数据库
shell> mysqldump --master-data --databases 数据库1 数据库2... > db.sql
// 导出所有数据库
shell> mysqldump --master-data --all-databases > db.sql
主服务器配置完毕。解除读锁
二、配置从服务器
1.导入数据库:
shell> mysql < db.sql
2.mysql配置文件
root@bird:~$ vim /etc/mysql/my.cnf
[mysqld]
# 开启binlog功能
log-bin=mysql-bin
# 设置唯一id
server-id=1
# 指定需要同步的数据库,不写会同步所有
binlog-do-db=dbname2
# 防止主键冲突(主主同步中会用到)
# 主键增量
auto-increment-increment=1
# 主键开始位置
auto-increment-offset=1
重启mysql服务即可生效。查询配置结果:
// 重启mysql
root@bird:~$ service mysql stop && service mysql start
3.在从服务器中设置主服务器信息:
mysql> CHANGE MASTER TO
MASTER_HOST='主服务器ip',
MASTER_USER='主服务器配置的账号',
MASTER_PASSWORD='主服务器配置的账号的密码',
MASTER_LOG_FILE='主服务器上查询的File字段',
MASTER_LOG_POS=主服务器上查询的Position字段;
4.开启复制服务:
mysql> STOP SLAVE;
mysql> START SLAVE;
主-从模型配置完毕!
三、验证同步性
主服务器:
//切换到需要同步的数据库
use 数据库名
// 创建测试数据表
CREATE TABLE test_repl (
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
PRIMARY KEY ( id )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
// 插入几条数据
INSERT INTO test_repl (name) VALUES('只能在主服务器上写个更新');
INSERT INTO test_repl (name) VALUES('只能在主服务器上写个更新');
INSERT INTO test_repl (name) VALUES('只能在主服务器上写个更新');
从服务器:
mysql> select * from test_repl limit 10;
+----+--------------------------------------+
| id | name |
+----+--------------------------------------+
| 1 | 只能在主服务器上写个更新 |
| 4 | 只能在主服务器上写个更新 |
| 7 | 只能在主服务器上写个更新 |
+----+--------------------------------------+
3 rows in set (0.00 sec)
同步成功!

浙公网安备 33010602011771号