配置:
10.10.10.1为master/10.10.10.2为slave
说明:
关键是开启log-bin=mysql-bin 启动二进制文件
mysql中的log-bin是存储的mysql的dml语句(事务相关的),根据这个mysql可以进行redo和undo----同时同步的时候,实际上是吧master中的log-bin传给slave,然后由slave服务器根据log-bin进行redo!!!所以开启log-bin是核心
A,master配置:
【mysqld】
log-bin=mysql-bin 启动二进制文件
server-id=1 服务器ID
binlog-do-db= test #设置同步数据库,如果有多个数据库,每个数据库一行
binlog-ignore-db = mysql #设置不要同步的数据库,如有多个数据库,每个数据库一行
#sql-bin-update-same #同步模式 ,在mysql5以上的版本都不需要这句,否则会启动不了mysql服务
master上创建认证用户(只要有replication slave权限就可以)以及dump数据库,并传给slave
1,grant replication slave on *.* to 'rsync'@'218.28.198.176'identified by
'yexu888';
#创建rsync用户,并授权给10.10.10.2使用
2,flush privileges;
3,flush tables with read lock;
#进行锁表操作,不让数据进行写入动作(需要做dump)
4,show masterstatus;
#查询主数据库状态,并记下FILE及Position的值
5,mysql> mysqldump –uroot –p123456 --default-character-set=gbk --single-transaction--opt --extended-insert=false --triggers -R --hex-blobmysqltest > mysqltest.sql
#--all-databases代表导出所有库
6,mysql>mysqldump –uroot –p123456 --default-character-set= gbk --single-transaction--opt --extended-insert=false --triggers -R --hex-blob test1234 > test1234.sql
#mysqldump命令将刚才查询到的两个库导出来
7,用scp传到slave服务器上,并source回去!
8,mysql> unlock tables;
#切换回之前的主库终端,进行表解锁操作。
ps:如果是原来服务器中的数据库已经有数据,那需要将这些数据导入到slave数据库中,因为,slave无法更具master的log-bin日志进行redo!!!
B,slave配置
【mysqld】
server-id = 2
log-bin=mysql-bin #本MySQL是slave服务器
master-host = 10.10.10.1 #Master服务器的IP
master-user = rsync #连接Master服务器的用户
master-password = 'yexu888' #连接Master服务器的密码
master-port =3306 #连接端口
master-connect-retry = 10 #重试次数
replicate-do-db=test #设置要接收的数据库,如有多个数据库,每个数据库一行
replicate-ignore-db= mysql #设置不要接收的数据库,每个数据库一行(一般这条可不写)
#log-slave-updates #在mysql5以上的版本都不需要这句
1, [root@localhost~]# mysqladmin -p123456 shutdown
[root@localhost ~]# mysqld_safe--user=mysql &
---------------重启mysql服务器