master 192.168.10.188
slave 192.168.10.199
数据库目录通过my.ini设置在其它路劲下
**************************************************************
第一步:master库设置
**************************************************************
1、主库创建/etc/my.cnf,修改[mysqld]里边的键值增加
#vi /etc/my.cnf
server-id=1
#不需要进行复制的数据库
replicate-ignore-db = mysql
replicate-ignore-db = information_schema
#sync_binlog将事务实时同步到磁盘
sync_binlog = 1
#添加二进制日志
log-bin=E:\mysql\log\mysql-bin
expire_logs_days = 10
max_binlog_size = 100M
#查询日志(建议不开启)
#log=E:\mysql\log\mysql.log
#添加错误日志
log-error = E:\mysql\log\error.log
#慢日志
log_slow_queries = ON
#log_slow_queries没有给出绝对路径,则在datadir指定的目录下
log_slow_queries="E:/mysql/log/slow.log"
long_query_time=5
log-queries-not-using-indexes
#log-slow-admin-statements服务器选项,你可以请求将慢管理语句,
#例如OPTIMIZE TABLE、ANALYZE TABLE和 ALTER TABLE写入慢查询日志
log-slow-admin-statements
#可以允许多少个错误连接
max_connect_errors = 6000
2、主库增加用户,用于从库读取主库日志。
#mysql -u root -ppassword
mysql>grant replication slave,reload, super on *.* to 'slave'@'192.168.10.199' identified by 'password';
3.重启主库
reset master ;
**************************************************************
第二步:slave库设置
**************************************************************
1、从库连接主库进行测试。
mysql -u slave -p -h 192.168.10.188
2、停从库,修改从库/etc/my.cnf,增加选项:
[mysqld]
server-id=2 --注意这个字段已经存在,只是需要修改即可.
master-retry-count = 999
3.重启slave库
4.查看master和slave的数据库server_id是否和my.cnf配置文件一样
mysql> show variables like '%server_id%';
/*
如果和配置文件中,不一样,则下面方法设置:
mysql并没有从my.cnf文件中更新server_id,既然这样就只能手动修改了
mysql> set global server_id=2; # 此处的数值和my.cnf里设置的一样就行
mysql> slave start;
*/
5.slave服务器从master同步
#mysql -u root -ppassword
启动从服务器Mysql数据库,执行如下命令:
MySql> slave stop;
change master to master_host='192.168.10.188',
master_user='slave',
master_password='password',
master_log_file='mysql-bin.000001',
master_log_pos=0;
/*该命令已经不支持:
mysql> load data from master;
这个功能以后将取消,尽可能使用备份主服务器数据库到从服务器上还原数据库。默认情况,主库直接新建数据库会同步到副库.
*/
6、启动从数据库数据同步命令:
start slave;
7、查看从数据库同步状态,Slave_IO_Status,Slave_Io_Running,Slave_SQL_Running
show slave status\G;
如果发现
Slave_IO_Running: NO
Slave_SQL_Running: Yes
查看错误日志:
C:\Program Files\MySQL\MySQL Server 5.5\data\xxxxxx.err
会发现如下错误:
111012 17:19:23 [ERROR] Error reading packet from server: Could not find first log file name in binary
log index file ( server_errno=1236)
111012 17:19:24 [ERROR] Got fatal error 1236: 'Could not find first log file name in binary log index file'
from master when reading data from binary log
一般出现这个错误是因为
一是权限问题
二是文件路径不多,或文件名不一样,Mysql对大小写很敏感,执行change master to master_host='192.168.10.188',
master_user='rekfan.com', master_password='password', master_log_file='mysql-bin.000001',
master_log_pos=0;语句的时候,master_log_file的mysql-bin前缀一定要与主服务器的log-bin配置的相同.
8、需要重新进行同步的时候,先停止同步服务器,重新设置,同步的日志文件master_log_file和同步起始位置master_log_pos:
stop slave;
9.测试同步效果
在主服务器上对数据库进行修改:
create database suzhou;
在从服务器端查看:
SHOW DATABASES;
这里也将出现一个名为mydb的一模一样的数据库!
**************************************************************
第三步:常用命令
**************************************************************
1.常用命令
1.1 主库使用
show master status\G;
1.2 从库使用
--查看读取的日志 show slave status\G