转:http://www.111cn.net/database/mysql/76450.htm

本文我们来讲讲Mysql主备如何部署,这里说的主是指Mysql主数据库,备是从数据库,备可以是多个,也可以是一个。
本文说的mysql主备是指单向、异步的数据复制。可以是一个主、多个备。这样做的好处显而易见:有利于健壮性、速度和系统管理。备用数据库可以做为只读查询和备份的机器,减轻主用数据库的负担。

实施前提:
主用数据库的配置里至少有:

[mysqld]
log-bin=mysql-bin
server-id=1

建议主备的数据库版本一致。

我所知道的最简单的实施方式(不需要停主库,甚至不需要长时间地禁止主库写入):

主库操作:
在主库里建一个复制用的用户:

grant replication slave on *.* TO 'replication'@'备库地址' identified by 'replication';

导出主库的数据,并记下当然日志文件和偏移:

mysqldump --master-data=2 --single-transaction -uroot -p --all-databases >dumpfile

这里是把数据以SQL的形式导出,并记下导出瞬间的日志文件和偏移(得益于--master-data=2参数),出来的dumpfile的前面会有一行类似以下的注释信息,就是文件名和偏移值了:

-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000011', MASTER_LOG_POS=1061553673;

对于这步,网络上一般采用的方法为:

FLUSH TABLES WITH READ LOCK;--先把主库设置成只读,然后导出SQL或者直接复制数据文件
    SHOW MASTER STATUS; --记下日志文件和偏移
    UNLOCK TABLES;  --恢复主库写入

这样,至少在复制数据的那段时间,主库是不可提供服务的。

备库操作:
复制主库的/etc/my.cnf和dumpfile。
把主库配置里的 server-id 改成2(或者3、4,多个备库保存互不相同),再加上

relay-log = slave-relay.log 
relay-log-index = slave-relay-log.index

导入数据:

mysql <dumpfile

进入mysql命令行执行:

SLAVE STOP;
CHANGE MASTER TO
MASTER_HOST='主库地址',
MASTER_PORT=3306,
MASTER_USER='replication',
MASTER_PASSWORD='密码',
MASTER_LOG_FILE='mysql-bin.000011',
MASTER_LOG_POS=1061553673;
SLAVE START;

然后,就搞定了,可以在备库执行

SHOW PROCESSLIST;

查看同步的状态,如果此命令的输出里有两个“system user”的进程,并且Command都是“Connect”的话,就差不多OK了,此时,任何对主库的修改,都能准实时地从备库里查询出来。

最新文章

  1. java分享第二十天(build.xml的语法及写法)
  2. python print 进度条的例子
  3. 并查集(图论) LA 3644 X-Plosives
  4. Deep Learning: Activation Function
  5. oracle11.0.2 64位版本 Toad连接
  6. Live555中RTP包的打包与发送过程分析
  7. sharepoint 模糊搜索
  8. 1988: Sn 爆long long 的处理方法
  9. 适配器模式(Adpater Pattern)
  10. HTML文本
  11. nginx系列2:搭建nginx环境
  12. linux安装zookeeper
  13. ACM-ICPC2018 沈阳赛区网络预赛-D-Made In Heaven8
  14. Oracle 12C pluggable database自启动
  15. Nios II uCLinux/Linux启动分析
  16. 在线生成条形码的解决方案(39码、EAN-13)
  17. Havel-Hakimi定理(推断是否可图序列)
  18. Delphi XE8中开发DataSnap程序常见问题和解决方法 (三)用TClientDataSet的“ProviderName”属性连接服务器时,无法找到服务器端的“DatasetProvier”
  19. 如何控制DBGrid里面显示的浮点数小数点后的位数?
  20. [转载]在table上使用::before/::after的问题

热门文章

  1. 【转】Description Resource Path Location Type Java compiler level&amp;n
  2. 封装好的AFN网络请求框架和MBProgress
  3. 屏幕监视专家 v1.0 定时录制屏幕动画发送到指定邮箱
  4. Tomcat崩溃
  5. python datetime模块
  6. python操作Excel--使用xlrd
  7. 微信小程序-画布组件
  8. python进阶(四)---需要了解的魔法方法
  9. OpenCV2+入门系列(二):图像的打开、创建与显示(命令行)
  10. 如何自定义ReportDesigner的向导界面(WIN)