1 修改master的mysql ,my.cnf文件
注意以下信息必须放在mysqld下面否则不生效 #ID号, 为1时表示为Master,其中master_id必须为1到232–1之间的一个正整数值; server-id=1 #启用二进制日志; log-bin=mysql-bin #需要同步的二进制数据库名; binlog-do-db=my_test #不同步的二进制数据库名,如果不设置可以将其注释掉; binlog-ignore-db=information_schema binlog-ignore-db=mysql binlog-ignore-db=personalsite binlog-ignore-db=test #设定生成的log文件名; log-bin="/usr/local/mysql/data/materlog" #把更新的记录写到二进制文件中; log-slave-updates
2 重新mysql后,查看设置server-id 是否生效 show variables like 'server_id' ;
3 查看master运行的状态参数 : show master status ;
注意:其中显示的 File | Position 需要在slave中设置。
5 主数据库执行,添加slave中同步数据的时候使用的用户:
GRANT REPLICATION SLAVE ON *.* TO [email protected] IDENTIFIED BY '123456';
6 设置slave中my.cnf信息,其中master开头的 5.1.7版本以后需要用change来设置 ,配置文件不识别
#如果需要增加Slave库则,此id往后顺延; server-id=2 log-bin=mysql-bin #不需要备份的数据库; replicate-ignore-db=mysql #需要备份的数据库 replicate-do-db=my_test log-slave-update 以下信息有的mysql 5.1.7以后版本不支持了,需要去掉 ,使用change命令设置 #主库host master-host=192.168.142.137 #在主数据库服务器中建立的用于该从服务器备份使用的用户 master-user=forslave master-password=123456 master-port=3306 #如果发现主服务器断线,重新连接的时间差; master-connect-retry=60
7执行以下命令设置master信息: 主库的ip,同步数据用户用户名和密码 , Master中 show master status ;显示的File | Position信息
CHANGE MASTER TO MASTER_HOST='192.168.142.136', MASTER_USER='forslave', MASTER_PASSWORD='123456', MASTER_LOG_FILE='materlog.000001', MASTER_LOG_POS=120;
9 如果show variables like 'server_id' 和my.cnf 中设置不一样可以用:set global server_id=1 设置数值和配置文件相同
10 如果slave同步进程停止,则需要重新设置同步的日志的点,Slave_SQL_Running=NO(到主库中show master status,然后设置,会出现部分数据丢失情况 ),更改master的一些信息:
change master to master_log_file='mysql-bin.000004',master_log_pos=98;
11 启动和停止slave
start slave ;
show slave status\G; 查看slave运行状态
看状态: Slave_IO_Running=Yes Slave_SQL_Running=Yes 则成功
Seconds_Behind_Master是否为0,0就是已经同步了
stop slave
12 查看日志信息如果没有Error则在主库中
13 从库中如果没有主库的某些表,则同步的sql进程会停止 ,需要用10中的方式进一步处理
14 读写分离:通过Amoeba 来实现 。
15 可以用shell脚本实现主从切换,主异常则切换从为主。