MySQL数据库的主从复制
文章目录
部署环境:
系统环境CentOS release 6.5_x64
主mysql服务器ip:172.18.49.10
从mysql服务器ip:172.18.49.2
开始部署安装:
Mysql服务器都已经搭建完成。
一、主mysql上:
1. 进入配置文件修改内容
cp /etc/my.cnf /etc/my.cnf.bak
vi /etc/my.cnf
2. 在文件中添加下列内容
log_bin=mysql-bin //开启二进制日志
server_id=1 //server_id 的值主从必须不同
3. 重新启动mysql数据库
service mysqld restart
4. 登录mysql后进行授权:
mysql> grant all on *.* to 'replication'@'%' identified by 'replication';
mysql> flush privileges;
注释:在master的数据库服务器中建立一个复制的账户,每个slave使用该账户链接master来进行复制,设置所有权限(根据具体情况自定)。上面创建了一个replication用户,密码是replication。只允许在所有段的ip地址的登录。
5. 进入数据库查看master的状态:
mysql -uroot -p
mysql> show master status;
注释:记住file和position的值,配置slave的时候需要用。
二、从mysql上配置:
1. 修改配置文件
vi /etc/my.cnf
在文件中添加下列内容
server_id = 2 //修改server_id,其值必须和master的不同。
relay_log=relay-logs //开启中继日志,可以自定义目录,mysql用户有权限即可
2. 重启MySQL数据库
service mysqld restart
3. 查看中继日志的启动状态:
mysql -uroot –p
mysql> show global variables like '%relay%';
4. 连接master服务器:
mysql> change master to master_host='172.18.49.10',master_user='replication',master_password='replication',master_log_file='master-bin.000003',master_log_pos=284;
选项解释:
master_host:Master 服务器IP
master_user:Master 服务器授权用户,也就是 Master 前面创建的那个用户 master_password:Master 服务器授权用户对应的密码
master_log_file:Master binlog 文件名
master_log_pos:Master binlog 文件中的 Postion 值
5. 手动启动复制线程:
mysql> start slave;
如果 Last_SQL_Error 没有错误提示以及 Salve 中的 Exec_Master_Log_Pos 值和 Master 中的 show master status; 中的 Postition 值是一样的,这样的话,MySQL 主从复制应该是成功的。
测试:
在master上:
mysql> use test;
mysql> create table users(id int(10),name varchar(48),sex char(16));
mysql> insert into users values(1,'qq','nan');
mysql> flush privileges;
在slave上:
mysql> use test;
则,主从复制OK!!!