在此不在赘述如何安装mysql数据库,只说它的主从复制,按以下步骤执行:
环境说明:
准备两台linux(虚拟)主机
Linux版本CentOS7、MySQL 5.6.17(mysql版本要一致)
IP地址分别为:192.168.1.1、192.168.1.2
创建复制账号
mysql会赋予一些特殊的权限给复制线程,因此必须在主库创建一个用户,并赋予其合适的权限,备库I/O线程以该用户名连接到主库并取其二进制日志。
在192.168.1.1 中创建一个192.168.1.2主机中可以登录的MySQL用户,并调用flush privileges刷新权限。
//192.168.1.1 : 主数据库服务器:
mysql>GRANT REPLICATION SLAVE ON *.* TO 'fuzhi'@'192.168.1.2' IDENTIFIED BY 'fuzhi';mysql>FLUSH PRIVILEGES;
注意:这个账号限制在本地并且只有192.168.1.2这个主机可以访问,因为这是一个特殊权限的账号(尽管这个账号无法执行select或者update),但是任然能从二进制日志中获取一些数据
配置主库和备库
MySQL配置文件都在: /etc/my.cnf
1.在主库的
my.cnf
文件的
[mysqld]
下添加:log-bin,server_id(具体如下:)
log-bin=mysql-bin # 开启二进制日志server_id=10 # 0-232任取 但必须和其他数据库中的不同 (必须唯一)!
注意:二进制日志必须开启,因为数据的同步实质上就是其他的MySQL数据库服务器将这个数据变更的二进制日志在本机上再执行一遍。
2.保存后重启mysql
3.查看主库中MySQL服务器二进制文件名与位置
mysql>SHOW MASTER STATUS;注意:此处重点关注File和Position;
告知二进制文件名与位置
在备库中执行:
mysql>CHANGE MASTER TO >MASTER_HOST='192.168.1.1', >MASTER_USER='fuzhi', >MASTER_PASSWORD='fuzhi', >MASTER_LOG_FILE='mysql-bin.000001', >MASTER_LOG_POS=68;
完成主从复制配置。
注意:MASTER_LOG_FILE和MASTER_LOG_POS这2个参数通过在主库中执行:SHOW MASTER STATUS获取到。
开启并查看,在备库中执行:
mysql>START SLAVE; #开启复制mysql>SHOW SLAVE STATUSG #查看主从复制是否配置成功
注意:当看到Slave_IO_Running: YES、Slave_SQL_Running: YES才表明状态正常。
Mysql 主从复制的优点:
1. 如果主服务器出现问题, 可以快速切换到从服务器提供的服务
2.可以在从服务器上执行查询操作, 降低主服务器的访问压力
3.可以在从服务器上执行备份, 以避免备份期间影响主服务器的服务
注意:受网络波动影响同步时间会实验受影响,一般只有更新不频繁的数据或者对实时性要求不高的数据可以通过从服务器查询, 实时性要求高的数据仍然需要从主数据库获得。