http://www.cnblogs.com/edisonchou/p/4133148.html

原理说的透彻

http://wangwei007.blog.51cto.com/68019/965575

来龙去脉的二进制日志以及常见问题处理和监控

http://www.diyoms.com/website/1318.html

centos5.6下mysql5.6主从环境安装配置实例

http://fghjk.blog.51cto.com/4359709/830794

A->B->C架构,mysqldump命令master-data参数

http://www.111cn.net/database/mysql/53744.htm

MySQL主主互备

http://asmboy001.blog.51cto.com/340398/197750/

实例解读mysqldump参数--master-data

生产环境master/slave主从数据库手动同步

主从配置需要注意的地方:

   (1).主DB server和从DB server数据库的版本一致

   (2).主DB server和从DB server数据库数据一致[ 这里就会可以把主的备份在从上还原,也可以直接将主的数据目录拷贝到从的相应数据目录]

   (3).主DB server开启二进制日志,主DB server和从DB server的server_id都必须唯一


1.主DB SERVER上的配置

   (1).安装数据库

   (2).修改数据库配置文件,指明server_id,开启二进制日志(log-bin)

   (3).启动数据库,查看当前是哪个日志,position号是多少 (使用mysqldump --master-data=2可以跳过3和5)

   (4).登陆数据库,授权用户[ip地址为从机IP地址,如果是双向主从,这里的还需要授权本机的IP地址(此时自己的IP地址就是从IP地址)]

   (5).备份数据库[记得加锁和解锁]

   (6).传送备份到从DB server上

   (7).启动数据库

以下步骤,为单向主从搭建成功,想搭建双向主从需要的步骤:

   (1).登陆数据库,指定主DB server的地址,用户,密码等信息[此步仅双向主从时,需要]

   (2).开启同步,查看状态

2.从DB SERVER上的配置

  (1).安装数据库

  (2).修改数据库配置文件,指明server_id[如果是搭建双向主从的话,也要开启二进制日志(log-bin)]

  (3).启动数据库,还原备份

  (4).查看当前是哪个日志,position号是多少[单向主从此步不需要,双向主从需要]

  (5).指定主DB server的地址,用户,密码等信息

  (6).开启同步,查看状态

==========================================================================

需求:master已经在运行,不可锁表更不可停用它,在线运行添加一个slave数据库。

方法:基本配置网上查找,现在说说关键部分:如何同步数据操作


1、备份导出master主机上需要同步的数据库文件(会锁表请在用户少的时候执行)

[root@aeolus1 c_learn]# /usr/local/mysql/bin/mysqldump -uroot -p --lock-tables --events --triggers --routines --flush-logs --master-data=2 --databases hkqj_global hkqj_inside hkqj_ucenter > /data/master.sql

\\master-data参数在建立slave数据库的时候会经常用到,因为这是一个比较好用的参数,默认值为1,默认情况下,会包含change master to,这个语句包含file和position的记录始位置。master-data=2的时候,在mysqldump出来的文件包含CHANGE MASTER TO这个语句,处于被注释状态\\

过滤出change master to信息

[root@aeolus1 c_learn]# grep -i "change master to" master-data.sql 

-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000012', MASTER_LOG_POS=107;


2、在slave从库上导入备份的文件,配置主库以及二进制日志 

mysql> source /data/mysq.bak.sql;

mysql> stop slave;

mysql> reset slave;

mysql> change master to ,        master_host='172.21.63.105',master_user='repl',master_password='repl',

  master_port=3306,

  master_log_file='mysql-bin.000012',//此处与grep -i查询的一致

  master_log_pos=107;//同上

以上命令是一行的,注释除外。

mysql> start slave

mysql> show slave status\G

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

从库默认不开启bin-log日志功能,除非做下级从库级联同步,才需开启从库的bin-log日志。

主库由于硬件故障,如何将从库提升为主库(一主多从)

(mysql slave)

(1) 确保从机没有再同步的SQL语句,即出现Has read all relay log再关闭从库IO_Threat进程

# mysql -uroot -p123456

> stop slave IO_THREAD

(2) 关闭从库slave服务,然后将其提升为主库

> stop slave

> reset master

(3) 更换从库IP为故障主库IP(配置方法略)

(4) 删除新的主库master.info和relay-log.info,防止下次重启还会按照从库启动

# cd /usr/local/mysql/log

# rm -rf master.info relay-log.info

(5) 重新配置从库连接主库的账号同步信息,以及在下级从库重新设置偏移量保持与新的主库一致即可

最后待主库硬件恢复,将其再设置为从库并更换为上述从库IP地址,完成主从切换。