文章出自:芥末花生
对于 MYSQL 的主从复制,我也看过网上不少帖子,N 多了,个人觉得采取地方虽然很多,可是介绍不够全面,很容易让新手走入误区啊。
主从复制做起来很简单,关键要注意的是二进制日志的问题,默认情况下,MYSQL FOR WIN 装好之后是不开启二进制日志的,这一点决定了你的成败。
两个数据库保持一致,其实很简单,别想太多,直接复制 \mysql\data,整个 data 拷过去就可以了。这是最简单,也最快的。(前提,首先 net stop mysql 停止数据库)
环境:
win 2003 两台
MYSQL 4.1 版本,在这里有人会说我的版本比较老了,我不多做解释,性能上各有需求。
master 主库的配置:
进入到 \mysql 下面,打开 my.ini 在 [mysqld] 下添加如下配置:
server-id=1 #服务器 ID,不能相同
binlog-do-db=mysqltest #需要同步的数据库名称为 mysqltest
log-bin=mysql-log #开启二进制日志,二进制日志名为:mysql-log
这个名称是自己定义的,开启二进制日志后,每次开启数据库会在 \mysql\data 下自动生成一个 mysql-log.000001, 按照顺序,每次重启数据库会生成这样的一个二进制日志文件。master 上开启二进制后还会自动生成一个 mysql-log.index 文件。
slave 从库的配置:
同 master 一样,配置 my.ini,在 [mysqld] 下添加如下:
server-id=2 #主机 ID
master-host=10.1.1.10 #master 主库的 IP 地址
master-port=3306 #主库的端口 默认为 3306
master-user=slave #同步帐号
master-password=test123 #同步帐号密码
replicate-do-db=mysqltest #同步的数据库
master-connect-retry=10 #重试间隔时间为 10s,实际时间自己按需求来。
read-only=1 #1 为只读 0 为可读写
保存即可。
此段为我个人添加,也是添加在 [mysqld] 下,用来实时记录日志的,可添加在主库,也可从库。文件夹需要自己创建
##############################
log-error=”D:/mysql/logs/error.log” #错误日志记录
log=”D:/mysql/logs/mysql.log” #实时同步数据的日志记录
long_query_time=1 #查询时间为 1 秒,根据日志大小时间来定
log-slow-queries=”D:/mysql/logs/slowquery.log” #开启慢查询,看实际要求看是否需要开启
#################################
配置完毕,net start mysql 开启两个数据库。
验证:在主库使用 show master status;
可以看到同步的数据库名和 post 值
在从库使用 show slave status\G;
Relay_Master_Log_File: mysql-log.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
这样就表示已经成功连接上了。主从其实就那么简单,从库在配置好之后,在 \mysql\data 下会自动生成如下文件:master.info 和 relay-log.info
从库是不需要开启二进制日志的。