mysql 下的 复写

windows下配置mysql


主服务器下设置my.ini文件(C:\Program?Files\MySQL\MySQL?Server?5.1)linux

文件末尾添加如下代码:sql

server-id=252 # 惟一表示码,建议使用 IP 最后一栏数据库

log-bin=D:\mysqlback # 日记文件名windows

bin-do-db=mydb; # 须要 replication 的 DB ,多个则多条对应语句服务器


从服务器下设置my.ini文件(C:\Program?Files\MySQL\MySQL?Server?5.1)ide

server-id=253性能

master-host=192.168.198.252spa

master-user=rep_user命令行

master-password=rep_user

master-port=3306

master-connect-retry=60 # 宕机或链接丢失的状况下,从服务器从新链接的秒数


replicate-do-db=mydb # 告诉从服务器限制默认数据库为mydb的语句复制,多个则多条语句

slave-skip-errors=all # 忽略错误


主服务器下开放一个用户,用于从服务器 replicate 访问

GRANT REPLICATION SLAVE ON *.* TO 'rep_user'@'192.168.198.%' IDENTIFIED BY 'rep_user'

GRANT SUPER, RELOAD ON *.* TO 'rep_user'@'192.168.198.%'

# 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' IDENTIFIED BY  '123456';

mysql> flush privileges ;

Query OK, 0 rows affected (0.00 sec)

在master2上建立slave1 的复制用户

mysql> GRANT REPLICATION SLAVE ON *.* TO 'rep1'@'172.72.15.152' IDENTIFIED BY  '123456';

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

 

四:在master2和slave1 上配置master属性

在master2上配置master属性

mysql> change master to

    -> master_host='172.72.15.41',

    -> master_user='rep1',

    -> master_password='123456',

    -> master_auto_position=1;

Query OK, 0 rows affected, 2 warnings (0.17 sec)

 

mysql>start slave;

 

在slave1 上配置master属性

mysql> change master to

    -> master_host='172.72.15.152',

    -> master_user='rep1',

    -> master_password='123456',

    -> master_auto_position=1;

Query OK, 0 rows affected, 2 warnings (0.17 sec)

 

mysql>start slave;

 

 

整个过程就是这样,另外要说起的一点是若是mysql 版本是5.6如下的或者是没开启gtids

的,须要在master2上配置log-slave-updates 参数,这个参数的做用是master2接受到master1的binlog到relay日志中去时,也会更新到本身的binlog中去,以便给它的slave使用!

相关文章
相关标签/搜索