mysql 5.5 数据库复制

来源:互联网 发布:怎么查本机网络ip地址 编辑:程序博客网 时间:2024/05/22 04:33

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

 

 

 

 

 

 

 

 

 

 

原创粉丝点击