一、安装环境
-
数据库已安装
- 主数据库ip:192.168.73.134
- 从数据库ip:192.168.73.135
当前Linux操作系统:CentOS7.2
Mysql数据库版本:5.6.39
Mysql的安装可参照之前的总结:http://www.jianshu.com/p/5e9b8cd9deb5
二、主库配置
1. vim /etc/my.cnf
编辑内容,在[mysqld]下添加以下配置:
server-id=134
log_bin=mysql-bin
max_binlog_size = 500M
binlog_cache_size = 128K
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=mysql
#同步的数据库名称,多条新增
binlog-do-db=test_db
log-slave-updates
expire_logs_day=2
binlog_format="MIXED"
2.1 各个参数的含义和相关注意项:
server-id = 134 : 服务器标志号,注意在配置文件中不能出现多个这样的标识,如果出现多个的话mysql以第一个为准,一组主从中此标识号不能重复。
log_bin=mysql-bin : 开启bin-log,并指定文件目录和文件名前缀。注意是_不是-,很多资料里面都是-,本人就踩了这个坑。
max_binlog_size = 500M : 每个bin-log最大大小,当此大小等于500M时会自动生成一个新的日志文件。
binlog_cache_size = 128K : 日志缓存大小
binlog-ignore-db=information_schema :不需要同步的数据库名字,如果是多个,就以此格式在再一行即可。
binlog-ignore-db=performance_schema
binlog-ignore-db=mysql
binlog-do-db=hhbox_devp : 需要同步的数据库名字,如果是多个,就以此格式再写一行即可
log-slave-updates : 当Slave从Master数据库读取日志时更新新写入日志中,如果只启动log-bin 而没有启动log-slave-updates则Slave只记录针对自己数据库操作的更新。
expire_logs_day=2 : 设置bin-log日志文件保存的天数,此参数mysql5.0以下版本不支持。
binlog_format="MIXED" : 设置bin-log日志文件格式为:MIXED,可以防止主键重复。
三、从库配置
1. vim /etc/my.cnf
编辑内容,在[mysqld]下添加以下配置:
server-id=135
log_bin=mysql-bin
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=mysql
#同步的数据库名称,多条新增
binlog-do-db=test_db
log-slave-updates
slave-skip-errors=all
slave-net-timeout=60
四、实现主从同步
4.1 实现数据库的统一
检查主从数据库的配置文件,查看是否已正确配置。首次实现同步,要备份主库上需要同步的数据库,然后完整的导入到从库中。
4.2 查看并记录主库bin-log信息
进入主库mysql中(先重启mysql),执行:
1. 重启mysql : service mysqld restart
2. 进入mysql : mysql -u root -p
3. 赋予从库权限账号,允许用户在主库上读取日志,赋予Slave机器有File权限与REPLICATION SLAVE的权限。
在Master数据库命令行中输入:
GRANT FILE ON *.* TO 'root'@'192.168.73.135' IDENTIFIED BY 'mysql password';
GRANT REPLICATION SLAVE ON *.* TO 'root'@'192.168.73.135' IDENTIFIED BY 'mysql password';
FLUSH PRIVILEGES
这里使用的仍是 root 用户作为同步的时候使用到的用户。
4. 重启mysql,显示主库信息。
show master status;
显示如下:
4.3 在从库上执行同步语句
1. 首先重启mysql : service mysqld restart
2. 进入mysql : mysql -uroot -p
3. 在mysql内部执行以下语句 :
stop slave;
change master to master_host='192.168.73.134',master_user='root',master_password='123456',master_log_file='mysql-bin.000001', master_log_pos=120;
4. start slave;
5. show slave status \G; 查看配置的信息
配置成功。