MySQL5.5各架构复制(一)

2014-11-24 18:32:32 · 作者: · 浏览: 0

本文档将要介绍的内容:


1、mysql的主从复制的配置
2、配置半同步
3、基于SSL的复制
4、复制过滤
5、主主模型

一、系统环境

master: 192.168.56.101
slave: 192.168.56.102
基于MySQL-5.5.24
实现主服务器和从服务器之间的数据复制,关于mysql的安装这里不在重复叙述,如有需要可参考其他文档,这里假设两个节点的服务器已经安装完成并能够正常启动。

二、配置的mysql主从复制

1、配置主服务器


1.1、编辑MySQL主配置文件
[root@master ~]# vim /etc/my.cnf //编辑配置文件确保有以下两行

log-bin=mysql-bin //定义开启二进制日志
server-id = 1 //定义server-id,主从服务器的id不能一样

1.2、建立具有复制权限的用户
[root@master ~]# /usr/local/mysql/bin/mysql -uroot -p
mysql> GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO cpmysql@'192.168.56.102' IDENTIFIED BY 'cpmysql'; //创建cpmysql用户并设置密码为cpmysql
mysql> FLUSH PRIVILEGES; //刷新授权表

查看当前使用的二进制文件和Posotions数值,后边在从服务器上要设置这两个值
mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 358 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.05 sec)


2、配置从服务器

2.1、编辑MySQL主配置文件
[root@slave ~]# vim /etc/my.cnf

#log-bin=mysql-bin //可选,关闭二进制日志文件
server-id = 11 //定义server-id不能和主服务器相同
relay-log=mysql-relay //开启中继日志且名称为mysql-relay

[root@slave ~]# service mysqld restart //重新启动mysql以使新配置生效
[root@slave ~]# /usr/local/mysql/bin/mysql -u root -p //以root用户登录mysql
确认relay_log已开启:
mysql> SHOW GLOBAL VARIABLES LIKE 'relay_log';
+---------------+-------------+
| Variable_name | Value |
+---------------+-------------+

| relay_log | mysql-relay |
+---------------+-------------+
1 row in set (0.00 sec)

确认server_id配置生效其直不能与主服务器相同
mysql> SHOW GLOBAL VARIABLES LIKE 'server_id';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id | 11 |
+---------------+-------+
1 row in set (0.00 sec)

2.2、配置主服务器相关参数
mysql> CHANGE MASTER TO MASTER_HOST='192.168.56.101',MASTER_USER='cpmysql',MASTER_PASSWORD='cpmysql',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=358;
说明:MASTER_LOG_FILE和MASTER_LOG_POS参数的值要和上边在主服务器上查询到的值一致。

启动从服务器进程
mysql> START SLAVE;
Query OK, 0 rows affected (0.00 sec)

查询从服务器状态,能看到Slave_IO_Running和Slave_SQL_Running两个进程运行状态为Yes
mysql> SHOW SLAVE STATUS\G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.56.101
Master_User: cpmysql
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000001
Read_Master_Log_Pos: 358
Relay_Log_File: mysql-relay.000002
Relay_Log_Pos: 253
Relay_Master_Log_File: mysql-bin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
...
如果出现其他异常情况造成不能启动,可查看mysql的错误日志,里边有详细的错误信息,例如这里为/mysqldata/slave.err

3、测试主从复制配置是否成功

在主服务器上创建一个数据库testdb
[root@master ~]# /usr/local/mysql/bin/mysql -u root -p
mysql> CREATE DATABASE testdb;
Query OK, 1 row affected (0.01 sec)

在从服务器上查看是否已经成功复制过来
mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test