mysql 主从复制
随着技术的发展, 在实际的生产环境中, 由单台 MySQL 数据库服务器不能满足实际的需求. 此时数据库集群就很好的解决了这个问题了. 采用 MySQL 分布式集群, 能够搭建一个高并发, 负载均衡的集群服务器. 在此之前我们必须要保证每台 MySQL 服务器里的数据同步. 数据同步我们可以通过 MySQL 内部配置就可以轻松完成, 主要有主从复制和主主复制.
MySQL5.6 开始主从复制有两种方式: 基于日志 (binlog); 基于 GTID(全局事务标示符). 此文章是基于日志方式的配置步骤.
环境说明
master 数据库 IP:192.168.1.1
slave 数据库 IP:192.168.1.2
mysql 版本: 5.5.38
主从复制
1. 在主从数据库配置文件, 一般 Linux 中的
MySQL 配置文件都在 / etc/my.cnf(windows 中的配置文件为 mysql.ini). 这里以同步 test 库为例子,
配置如下:
[mysqld]# 数据库 ID 号,
为 1 时表示为 Master,
其中 master_id 必须为 1 到 232 - 1 之间的一个正整数值,
主从 server - id 不能一样;
server - id = 1#启用二进制日志;
log - bin = mysql - bin sync - binlog = 1#需要同步的二进制数据库名;
binlog - do - db = test
保存文件, 重启 MYSQL.
2. 构建主从复制,
第一步: 在 192.168.1.1(主) 中创建一个 192.168.1.2(从) 可以登录的 MySQL 用户, 这里以 mysql119 用户作为例子.
mysql > CREATE USER 'mysql119'@'@'IDENTIFIED BY '123456';
mysql > GRANT REPLICATION SLAVE ON * . * TO 'mysql119'@'192.168.1.%'IDENTIFIED BY '123456';
mysql > FLUSH PRIVILEGES;
第二步:
查看 192.168.1.1 主 MySQL 服务器二进制文件名与位置
mysql>SHOW MASTER STATUS;
第三步: 告知从库二进制文件名与位置
在 192.168.1.2 中执行:
mysql>CHANGE MASTER TO
>MASTER_HOST='192.168.95.11',
>MASTER_USER='mysql119',
>MASTER_PASSWORD='123456',
>MASTER_LOG_FILE='mysql-bin.000007',
>MASTER_LOG_POS=525;
完成主从复制配置
4. 测试主重复制
在 192.168.1.2 中
mysql>SLAVE START; #开启复制
mysql>SHOW SLAVE STATUS\G #查看主从复制是否配置成功
如图:
当看到 Slave_IO_Running: YES,Slave_SQL_Running: YES 才表明状态正常
实际测试:
查看主重库的 test 库的 test_table, 然后往主的 test 库插入一条数据再观察从 test 库的数据, 如图:
注意:
1. 主重 mysql 版本最好保持一致, 避免因版本差异出现不可预知的问题.
2. 出现从数据库连接不上主数据库, 查看是否授权问题.
3. 在配置主从复制的时候, 备份 master 数据前先锁表, 保证数据一致性.
如有问题, 欢迎指正!
来源: http://www.bubuko.com/infodetail-2479092.html