GRANT REPLICATION SLAVE ON *.* TO 'rep_user'@'192.168.198.%'>
GRANT SUPER,> # GRANT SELECT, FILE, REPLICATION SLAVE ON *.* TO 'rep_user'@'192.168.198.%'
在主服务器下,拷贝数据库文件目录Data ,到从服务器下 (可以在my.ini下修改数据库的保存路径)
路径 (C:\Program Files\MySQL\MySQL Server 5.1\data) # 本次使用的数据库引擎MyISAM,可以直接拷贝
分别重启主从服务器....
在从服务器 mysql 命令行下,输入命令: load data master
在主服务器 mysql 命令行下,查看结果:show master status;
在从服务器 mysql 命令行下,执行:
slave start;
show slave status \G;
可以看到 “Waiting for master to send event ”的字眼,表示成功
说明:在第一次设置完成master,slave之后,如果要修改slave的my.ini里master的设置必须先删除data下面的master.info文件,重启服务才能生效。否则服务器会以master.info中的信息为准。
//****************************************************************
//** for linux
//** 设置大致与 windows 下相同
//** 设置my.cnf文件
//****************************************************************
在实际的应用过程中,如果所有slave都直接连到master 上,所有的slave都会从master上接受binglog的内容,而当你业务扩张的时候,slave 节点的不断增加,这必然会对master增加负担,容易达到瓶颈。
有一种提高Replication性能的方法,就是增加mysql Replication结构的深度,就是一个master 只Replication给一个slave,在由这个slave 复制给其他的slave。
结构为:master1-->master2-->slave1....
(Mysql的版本都是5.6.9)
环境:
Maste1 :
Hostname:media
Ip:172.72.15.41
Master2:
Hostname:rac1
Ip:172.72.15.151
Slave1:
Hostname:rac2
Ip:172.72.15.152
详细步骤:
一:导出数据:
在导出数据之前把数据库的表都锁上,并置于read only状态
mysql> flush tables with read lock;
Query OK, 0 rows affected (0.00 sec)
mysql> set global read_only=on;
Query OK, 0 rows affected (0.00 sec)
再开始maste1上面把数据导出来,由于5.6版本增加了gtid的功能,所以在用mysqldump导出的时候,可以通过 --set-gtid-purged 这个选项控制是否要用gtids来恢复,默认是开启的!
[root@media ~]# mysqldump -u root -psbcenter -B new1 > /tmp/new1.sql
Warning: Using a password on the command line interface can be insecure.
Warning: A partial dump from a server that has GTIDs will by default include the GTIDs of all transactions, even those that changed suppressed parts of the database. If you don't want to restore GTIDs, pass --set-gtid-purged=OFF. To make a complete dump, pass --all-databases --triggers --routines --events.
[root@media ~]# scp /tmp/new1.sql 172.72.15.151:/root/(scp 复制文件,不同linux下)
root@172.72.15.151's password:
new1.sql 100% 8346 8.2KB/s 00:00
二:到maste2,slave1上导入数据
如果mysqldump 导出数据的时候 --set-gtid-purged 没有设置成off,那么master2启动mysqld 的时候需要 启用gtid_mode=on
Master2上导入数据
[root@rac1 ~]# mysql < new1.sql
Slave1 上导入数据
[root@rac2 ~]# mysql < /root/new1.sql
三:创建复制用户
在master 1 上创建master2的复制用户
mysql> GRANT REPLICATION SLAVE ON *.* TO 'rep1'@'172.72.15.151'> mysql> flush privileges ;
Query OK, 0 rows affected (0.00 sec)
在master2上创建slave1 的复制用户