两个数据库的IP地址:
Master IP:192.168.0.100
Slaves IP:192.168.0.101
1. Master数据库在my.ini(linux my.cnf)中添加的配置
server-id = 1
log-bin=mysql-bin #开启主服务器二进制日志记录
binlog-do-db=YNedut #需要同步的数据库名,可写多行
binlog-ignore-db=mysql #不需要同步的数据库名,可写多行
max_allowed_packet = 32M #两台服务器同步时允许传递的包大小
2. Master上运行下面的命令
grant replication slave on *.* to 'admins'@'192.168.0.101' identified by '123’;
备注:在master中为slaves授权
A. 账号:admins
B. 密码:123
C. 授权的ip地址为:192.168.0.101
3. 查看master数据库的状态
Mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position| Binlog_Do_DB|Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| MySQL-bin.000001 | 107 | | |
+------------------+----------+--------------+------------------------+--------------------------------+
4. Master遇到问题的解决方案
reset master; //重置 master;
flush logs;//重置过后 show master status;中的MySQL-bin.000001
//的序号加1= MySQL-bin.000002。
5. Slaves数据库在my.ini(linux my.cnf)中添加的配置
server-id=2 #必须跟master不一样
max_allowed_packet = 32M #两台服务器同步时允许传递的包大小
6. Slaves上运行下面的命令
change master to master_host='192.168.100',master_user='admins',master_password='123',
MASTER_LOG_FILE='MySQL-bin.000001',MASTER_LOG_POS=107;
备注:MASTER_LOG_FILE='MySQL-bin.000001',MASTER_LOG_POS=107;为show master status;查询
出来的状态值。
7. Slaves上运行下面的命令启动数据同步
Mysql> slave start;
8. Slaves上遇到问题的解决方案
A. slave stop;
B. reset slave; //解决server_errno=1236;
C. Mysql> show slave status;//查看主从复制的状态
备注:如果看到error表示没有同步成功,查看MYSQL日志找到错误原因
存放mysql数据文件的地址下的计算机名.err。/usr/local/mysql/var/localhost.localdomain.err
9. Master与Slaves的测试
A. Master 和Slaves的表结构必须保持一致。
B. 在Master和Slaves中分别创建一张test表
CREATE TABLE `syn` (
`id` int(11) NOT NULL,
`value` varchar(30) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
C. 在master中插入一条数据
INSERT INTO `syn` VALUES ('1', 'test');
备注:如果Salves中有刚才在master中插入的数据则同步成功;否则同步失败!
2、 Mysql proxy 安装
2.1. Linux下所依赖的包
A. GC++
B. Glib
C. LUA5.1
D. Libevent
2.2. MySQL Proxy 安装
[root@localhost ~]#tar -zxvf mysql-proxy-0.6.1-linux-rhel4-x86-32bit.tar.gz -C /usr/local/mysql/
[root@localhost ~]#cd /usr/local/mysql
[root@localhost mysql]#mv mysql-proxy-0.6.1-linux-rhel4-x86-32bit/ mysql-proxy
[root@localhost sbin]# export PATH=$PATH:/usr/local/mysql/mysql-proxy/sbin/
3. 使用MySQL Proxy
3.1、查看帮助选项
[root@localhost ~]# mysql-proxy --help-all
3.2、对MySQL 操作
MySQL服务器假设已经安装。(安装步骤这里就不写了)
两台机器上的表初始结构和数据都是一样的,而且都有admins这个用户(密码必须一致)。
启 动 MySQL-Proxy ( 测 试 读 写 分 离 )
[root@localhost]# mysql-proxy
--proxy-read-only-backend-addresses=192.168.0.101:3306 --proxy-backend-addresses=192.168.0.100:3306 --proxy-lua-script=/usr/local/mysql/mysql-proxy/share/mysql-proxy/rw-splitting.lua
备注:192.168.0.101:3306 提供只读服务
192.168.0.100:3306 提供写服务
3.3、Mysql-proxy 的默认端口为4040
3.4、数据测试为用mysql client 连接 mysql-proxy进行数据操作