共计 3576 个字符,预计需要花费 9 分钟才能阅读完成。
阅读目录
- 前言
- 一、系统规划
- 1、主服务器
- 2、从服务器
- 二、安装准备
- 1、存储
- 2、网络
- 3、NTP
- 4、其他
- 5、安装 MySQL
- 三、主服务器配置
- 1、准备测试数据
- 2、设置 my.cnf 参数
- (1)拷贝配置文件
- (2)参数设置
- (3)重启服务器
- 3、为 slave 用户添加同步专用权限
- (1)创建复制账户并赋权
- (2)添加管理用户
- (3)刷新权限
- 四、从服务器设置
- 1、设置 my.cnf 参数
- (1)备份配置文件
- (2)修改参数信息
- (3)重启服务器
- 五、数据库备份、同步
- 1、对数据库进行备份
- 2、配置从服务器连接主服务器同步
- (1)、获取主服务器二进制日志信息
- (2)设置从服务器同步
- 3、同步验证
- 错误
- 1、启动从服务器失败
前言
MySQL 的主从复制是基于二进制日志机制的,需开启二进制日志功能。在具体的配置过程中,需注意主服务器与从服务器均配置唯一 ID 编号,且从服务器必须设置主服务器的主机名、日志文件名、文件位置等参数。整个过程可分为如下几个步骤:
(1)主服务器:开启二进制日志功能,设置服务器 ID,并重启 MySQL 服务;
(2)在所有从服务器上设置服务器 ID(唯一);
(3)在主服务器上为不同的从服务器创建可读取主服务器日志文件的账户,或使用统一账户;
一、系统规划
1、主服务器
操作系统版本: RHEL 6.6 x64
数据库版本: MySQL 5.6
主机 IP:192.168.152.129
主机名:master
数据库名称:
ID 编号:1
2、从服务器
操作系统版本:RHEL 6.6 x64
数据库版本:MySQL 5.6(必须保证 MySQL 版本一致)
主机 IP:192.168.152.128
主机名:slave
数据库名称:
ID 编号:2
注:本文为个人学习之用,使用虚拟机模拟,可作为实施参考。
二、安装准备
1、存储
需要根据实际情况,为源数和目标端数据库分配足够的可用空间
2、网络
需要开通源端和目标端服务器的 any-any 的网络端口互通性
3、NTP
需要同步源和目标主机时钟同步机制,若为内网环境,推荐配置内网时钟服务器
4、其他
配置静态 IP、主机名、IP 与主机名绑定、防火墙(开启端口或关闭防火墙)
5、安装 MySQL
为主服务器和从服务器安装 MySQL,须保证两者版本一致,或者 slave 端版本高于 master 版本。
三、主服务器配置
1、准备测试数据
准备测试数据,模拟要同步对象。
mysql> create database hr;
mysql> use hr;
mysql> create table emp(id int primary key,name char(20));
mysql> insert into emp(id,name) values(1,’tom’);
2、设置 my.cnf 参数
(1)拷贝配置文件
# cp /usr/local/mysql/my.cnf /etc/my.cnf
如有必要,应注意备份配置文件,并且在生产活动懂养成备份的意识。
(2)参数设置
以下仅列出几个必要参数:
log-bin=mysql-bin 启用二进制日志
server-id=1 服务器 ID,可 1 - 之间的任意整数
binlog-ignore-db=information_schema 避免同步的数据库
binlog-ignore-db=performance_schema
binlog-ignore-db=mysql
binlog-do-db=hr 二进制需要同步的数据库名
注意:在配置文件中不可使用 skip-networking 参数,否则从服务器将无法连接主服务器并进行数据同步
(3)重启服务器
# service mysqld restart
3、为 slave 用户添加同步专用权限
(1)创建复制账户并赋权
mysql> GRANT FILE ON *.* TO 'slave_cp'@'192.168.1.2' IDENTIFIED BY 'root';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'slave_cp'@'192.168.1.2' IDENTIFIED BY 'root';
mysql> FLUSH PRIVILEGES;
(2)添加管理用户
grant all privileges on *.* to admin@'%' identified by 'root';
(3)刷新权限
flush privileges;
四、从服务器设置
1、设置 my.cnf 参数
(1)备份配置文件
# cp /usr/local/mysql/my.cnf /etc/my.cnf
(2)修改参数信息
必要参数如下:
log-bin=mysql-bin
server-id=2 #从服务器 ID
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=mysql
replicate-do-db=hr #同步的数据库名
replicate-ignore-db=mysql #屏蔽不同步的数据库
log-slave-updates
slave-skip-errors=all
slave-net-timeout=60
注:MySQL 5.6 之后没有 master-user 等参数,否则重启报错
(3)重启服务器
# service mysqld restart
五、数据库备份、同步
1、对数据库进行备份
[root@master mysql]# /usr/local/mysql/bin/mysqldump -h localhost -uroot -proot --all-databases --lock-all-tables >/tmp/dbdump.sql
[root@master mysql]# scp /tmp/dbdump.sql root@slave:/tmp/
[root@slave ~]# mysql -u root -p < /tmp/dbdump.sql
注:从服务器不需要创建要同步的数据库,备份脚本会自动创建。
2、配置从服务器连接主服务器同步
(1)、获取主服务器二进制日志信息
[root@master mysql]# mysql -uroot -p
Enter password:
mysql> flush tables with read lock; -- 只读锁定
mysql> show master status;
mysql> unlock tables; -- 解除锁定
(2)设置从服务器同步
[root@slave ~]# mysql -u root –p
mysql> stop slaves;
mysql> change master to
-> master_host='192.168.152.129',
-> master_user='slave_cp',
-> master_password='root',
-> master_log_file='mysql-bin.000003',
-> master_log_pos=195; -- 这里的参数取值参考查询到的 master 日志信息
mysql> start slave;
mysql> show slave status \G
3、同步验证
在 master 上添加数据,查看 slave 端的同步情况。
master 节点:
[root@master ~]# mysql -uroot -p
mysql> create database test;
mysql> use test;
mysql> create table users(id int primary key,name char(20));
mysql> insert into users(id,name)values(1,'aa');
mysql> use hr;
mysql> show tables;
mysql> create table bb(id int,name char(20));
mysql> insert into emp(id,name)values(2,'bb');
slave 节点:
[root@slave ~]# mysql -uroot -p
mysql> select * from test.users;
错误
1、启动从服务器失败
ERROR 1872 (HY000): Slave failed to initialize relay log info structure from the repository
解决:
mysql> reset slave;
mysql> change master to master_host='192.168.152.129',
master_user='slave_cp',master_password='root',master_log_file='mysql-bin.000005',
master_log_pos=610;
mysql> start slave;
本文永久更新链接地址 :http://www.linuxidc.com/Linux/2017-09/146728.htm