MySQL支持单向、异步复制,复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。主服务器将更新写入二进制日志文件,并维 护日志文件的一个索引以跟踪日志循环。当一个从服务器连接到主服务器时,它通知主服务器从服务器在日志中读取的最
一、概述
MySQL从3.23.15版本以后提供数据库复制(replication)功能,利用该功能可以实现两个数据库同步、主从模式、互相备份模式的功能。本文档主要阐述了如何在linux系统中利用mysql的replication进行双机热备的配置。 二、环境 操作系统:Linux 2.6.23.1-42.fc8 # SMP(不安装XEN) Mysql版本:5.0.45-4.fc8 设备环境:PC(或者虚拟机)两台 三、配置 数据库同步复制功能的设置都在MySQL的配置文件中体现,MySQL的配置文件(一般是my.cnf):在本环境下为/etc/my.cnf。 3.1 设置环境: IP的设置: A主机IP:10.10.0.119 Mask:255.255.0.0 B主机IP:10.10.8.112 Mask:255.255.0.0 在IP设置完成以后,需要确定两主机的防火墙确实已经关闭。可以使用命令service iptables status查看防火墙状态。如果防火墙状态为仍在运行。使用service iptables stop来停用防火墙。如果想启动关闭防火墙,可以使用setup命令来禁用或定制。 最终以两台主机可以相互ping通为佳。 3.2 配置A主(master) B从(slave)模式 3.2.1 配置A 为master
1、增加一个用户同步使用的帐号: GRANT FILE ON *.* TO ‘backup’@'10.10.8.112' IDENTIFIED BY ‘1234’; GRANTREPLICATION SLAVEON *.* TO ‘backup’@'10.10.8.112' IDENTIFIED BY ‘1234’; 赋予10.10.8.112也就是Slave机器有File权限,只赋予Slave机器有File权限还不行,还要给它REPLICATION SLAVE的权限才可以。 2、增加一个数据库作为同步数据库: create database test; 3、创建一个表结构: create table mytest (username varchar(20),password varchar(20)); 4、修改配置文件: 修改A的/etc/my.cnf文件,在my.cnf配置项中加入下面配置: server-id = 1
#Server标识 log-bin binlog-do-db=test
#指定需要日志的数据库
5、重起数据库服务: service mysqld restart 查看server-id: show variable like ‘server_id’; 实例: mysql> show variables like 'server_id'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | server_id
| 1
| +---------------+-------+ 1 row in set (0.00 sec)
6、用show master status/G命令看日志情况。 正常为: mysql> show master status/G *************************** 1. row *************************** File: mysqld-bin.000002 Position: 198 Binlog_Do_DB: test,test Binlog_Ignore_DB: 1 row in set (0.08 sec) 3.2.2 配置B 为slave 1、增加一个数据库作为同步数据库: create database test; 2、创建一个表结构: create table mytest (username varchar(20),password varchar(20)); 3、修改配置文件: 修改B的/etc/my.cnf文件,在my.cnf配置项中加入下面配置: server-id=2 master-host=10.10. 0.119 master-user=backup
#同步用户帐号 master-password=1234 master-port=3306 master-connect-retry=60 #预设重试间隔60秒 replicate-do-db=test
#告诉slave只做backup数据库的更新