MySQL支持单向、异步复制,复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。主服务器将更新写入二进制日志文件,并维护日志文件的一个索引以跟踪日志循环。当一个从服务器连接到主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置。从服务器接收从那时起发生的任何更新,然后封锁并等待主服务器通知下一次更新。
为什么使用主从复制?
1、主服务器/从服务器设置增加了健壮性。主服务器出现问题时,你可以切换到从服务器作为备份。
2、通过在主服务器和从服务器之间切分处理客户查询的负荷,可以得到更好的客户响应时间。但是不要同时在主从服务器上进行更新,这样可能引起冲突。
3、使用复制的另一个好处是可以使用一个从服务器执行备份,而不会干扰主服务器。在备份过程中主服务器可以继续处理更新。
MySQL使用3个线程来执行复制功能(其中1个在主服务器上,另两个在从服务器上。当发出START SLAVE时,从服务器创建一个I/O线程,以连接主服务器并让主服务器发送二进制日志。主服务器创建一个线程将二进制日志中的内容发送到从服务器。从服务器I/O线程读取主服务器Binlog Dump线程发送的内容并将该数据拷贝到从服务器数据目录中的本地文件中,即中继日志。第3个线程是SQL线程,从服务器使用此线程读取中继日志并执行日志中包含的更新。SHOW PROCESSLIST语句可以查询在主服务器上和从服务器上发生的关于复制的信息。
默认中继日志使用host_name-relay-bin.nnnnnn形式的文件名,其中host_name是从服务器主机名,nnnnnn是序列号。用连续序列号来创建连续中继日志文件,从000001开始。从服务器跟踪中继日志索引文件来识别目前正使用的中继日志。默认中继日志索引文件名为host_name-relay-bin.index。在默认情况,这些文件在从服务器的数据目录中被创建。中继日志与二进制日志的格式相同,并且可以用mysqlbinlog读取。当SQL线程执行完中继日志中的所有事件后,中继日志将会被自动删除。
从服务器在数据目录中另外创建两个状态文件--master.info和relay-log.info。状态文件保存在硬盘上,从服务器关闭时不会丢失。下次从服务器启动时,读取这些文件以确定它已经从主服务器读取了多少二进制日志,以及处理自己的中继日志的程度。
主master:192.168.5.60
从slave:192.168.5.61
1、在master mysql创建同步用户
grant emuser slave,file on *.* to 'emuser'@'192.168.5.61' identified by '123456';
flush privileges;
修改master的my.cnf的配置
wait_timeout = 30000000
interactive-timeout = 30000000
binlog-do-db=cdn_view #设置二进制日志记录的库
log-bin=mysql-bin #打开mysql二进制日志
binlog-ignore-db=mysql ##设置二进制日志不记录的库
server-id = 12760 #设置mysql_id,主从不能相同
long_query_time = 5
expire_logs_days= 3
2、修改slave的my.cnf的配置
wait_timeout = 30000000
interactive-timeout = 30000000
log-bin=mysql-bin
server-id = 12761
replicate-do-db=cdn_view #设置同步的库
replicate-ignore-db=mysql #设置不同步的库
log-slave-updates #同步后记录二进制日志
slave-skip-errors=all
slave-net-timeout=60
sync_binlog=1
binlog_format=mixed
############################################################################
分别重启主从mysqld服务,登录主mysql,在主上执行flush tables with read lock;
然后将cdn_view数据库的数据copy到从上,并记录下主上show master status\G的结果:
mysql> show master status\G;
*************************** 1. row ***************************
File: mysql-bin.000009
Position: 341
Binlog_Do_DB: cdn_view
Binlog_Ignore_DB: mysql
1 row in set (0.00 sec)
然后执行unlock tables;
登录从mysql,在从上执行:
stop slave;
change master to master_host='192.168.5.60',master_user='emuser',master_password='123456', master_log_file='mysql-bin.000009', master_log_pos=341;
start slave;
show slave status\G;
如果出现如下信息说明主从同步成功。
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
来自http://web.hackbase.com/tech/2011-07-11/64447.html
分享到:
相关推荐
作者:高鹏(网名八怪),《深入理解MySQL主从原理32讲》系列文的作者。2008年开始至今一直从事Oracle/MySQL相关工作,现任易极付高级DBA,Oracle Ocm。有丰富的数据库性能调优,故障诊断经验,并且对MySQL源码有...
提供mysql主从配置详细步骤,并说明主从切换的方法与实现步骤
MySQL主从复制类型简介入门
MySQL主从安装部署 MySQL主从安装部署 MySQL主从安装部署
mysql主从库配置,mysql安装和环境变量设置以及主从库配置
自己整理的关于mysql主从复制相关的配置和一些关于在mysql主从复制运行的过程中遇到的问题和相关的解决方法
编写的脚本用来监控mysql主从模式 环境: Centos5.6 mysql只做同步指定库,没有同步mysql库用户数据 登陆从服务器mysql,添加验证的用户 grant replication client on *.* to 'nagios'@localhost identified ...
MySQL主从复制搭建从入门到掌握
mysql主从互备配置,支持快速数据迁移
mysql主从同步配置 mysql主从同步配置 mysql主从同步配置
线上经验谈MySQL主从切换的一般步骤
MySQL主从复制架构原理与配置实践
MySQL 主从复制模式全面实践,很详细,很不错,建议下载看看
Mysql主从同步备份策略 五月 18th, 2009 at 17:30 - 3,803 views 环境: 主从服务器上的MySQL数据库版本同为5.1.34 主机IP:192.168.0.1 从机IP:192.168.0.2 一. MySQL主服务器配置 1.编辑配置文件/etc/my.cnf # ...
mysql主从数据库的优势
MySQL主从搭建(一主一从)从库my.ini
mysql主从娄据库配置,详细清晰 还有监控等命令解析
MySQL主从配置详解.pdf 1
MySQL主从复制部署实施文档
mysql主从监控,MySQL主从同步失败后自动同步,可以建立一个任务,定时巡检,巡检到失败后自动从新做主从