log-bin = mysql-bin #日志文件 必填项重启数据库 然后在主服务器库中新建一个备份账号;
server-id = 1 # 1-32 必填项
replicate-do-db = test #指向数据库 必填项
replicate-ignore-db = mysql #指定不要同步的数据库,如果指定了binlog(replicate)-do-db就不用再指定该项
grant replication slave on *.* to slave@192.168.0.2 identified by ‘slave‘ ; #新建一个备份账号
flush privileges; #更新权限
注释:指向到192.168.0.2的从服务器 给从服务器一个备份账号;账号是salve 密码:slave identity by 代表着密码 账户@从服务器地址 identity by 密码FLUSH TABLES WITH READ LOCK;:先锁定表此备份方式需要在CMD中退出mysql的连接 在 mysql/bin中执行(因为bin文件中有个 mysqldump.exe的文件) mysqldump --master-data -uroot -p test(需要备份的数据库名) > test.sql 备份成功后 查看主服务器的日志文件信息 show master status \G 以上所有步骤都正确的话,将进行 解表 :unlock tables; 从服务器 配置从服务器的my.ini 在最下面添加
server-id=2 #指定唯一的ID,2至32,必须的,并且不能跟主数据库一样
replicate-do-db=rep_test #指定要同步的数据库,必须的
lower_case_table_names=1 #必须要,否则从数据库只能更新出表 而不能同步表数据
配置登录主数据库的账号和密码等信息;有两种方法: ①:在my.ini中进行配置#主服务器的IP地址#日志文件 master_log_file = ‘mysql-bin.000008‘, #
master-host=10.0.0.100
#从服务器连接主服务器的帐号
master-user=slave
#从服务器连接主服务器的帐号密码
master-password=‘slave‘
#主服务器端口
master-port=3306
#同步时间间隔为60秒
master-connect-retry=10
master_log_pos = 79; ②:用代码进行配置 change master to master_host=‘192.168.0.1‘,master_user=‘slave‘,master_password=‘slave‘, master_log_file=‘mysql- bin.000001‘,master_log_pos=120; 设置主账户的信息;详解: 设置主服务器的IP(192.168.0.1) 设置登录账号(slave 是主服务给此从服务器的账号) 设置登录密码(slave是主服 务器给此从服务器的密码) 备份日志文件名(mysql-bin.000001是mysql默认的格式 主服务器查看状态的File:此参数) master_log_pos (应该是主服务器 show master status \G 查看状态的Position:(int型)(XXX) 配置成功后 ;启用开始配置 start slave;(开始备份从服务器 slave 是固定参数) 查看从数据库信息 :show slave status; 如果出现: Slave_IO_Running: YesSlave_SQL_Running: Yes以上两项都为Yes,那说明没问题了 到此完成; 然后可以去主服务操作 看从服务器是否成功备份; 可以查看URL:http://www.cnblogs.com/shuidao/p/3551238.html 每次停止备份或者备份报错的时候;应该先输入 stop slave停止备份----change 重新配置参数 ---start slave;启动配备------show slave status; 以上方式是配置新的主从的数据库,当数据库中以前有存在数据的时候;是同步不了; 配置旧数据库的主从复制 大部分和上面大同小异 1、编辑主数据库的my.ini文件,加上: binlog-do-db=landclash(数据库名) 2、将主数据库data目录下需要做主从复制的数据库的同名目录拷贝到从数据库的data目录下 3、在从数据库的my.ini问价,加上一下内容 replicate-do-db=landclash(数据库) 结束:剩下的同步 与上面方法一直 在同一服务器创建两个MySQL的话,做主从同步 很容易发生 UUID错误;此错误更改方法:bin/data/auto.cnf 修改里面的UUID(随便改一个数字即可) slave status \G 出现找不到表的时候,一般是Position位置对不上; 查看windows主机创建两个数据库 做模拟主从操作:请查看 一个主机创建两个MySQL 网页版浏览器不能根据端口号进行访问数据库;所以推荐使用mysql工具 Navicat 主从同步时需要要到的命令: *:代表着mysql 或者 mysql的名称 net stop *;停止mysql net start *;启用mysql 主服务器常用命令:
grant replication slave on *.* to slave@192.168.0.2 identified by ‘slave‘ ; #新建一个备份账号
flush privileges; #更新权限
FLUSH TABLES WITH READ LOCK;:先锁定表show master status \G :查看主服务器日志信息 unlock tables;:解表 从服务器常用命令: change master to master_host=‘192.168.0.1‘,master_user=‘slave‘,master_password=‘slave‘, master_log_file=‘mysql- bin.000001‘,master_log_pos=120; 设置主账户的信息;详解: 设置主服务器的IP(192.168.0.1) 设置登录账号(slave 是主服务给此从服务器的账号) 设置登录密码(slave是主服 务器给此从服务器的密码) 备份日志文件名(mysql-bin.000001是mysql默认的格式 主服务器查看状态的File:此参数) master_log_pos (应该是主服务器 show master status \G 查看状态的Position:(int型)(XXX) start slave;(开始备份从服务器 slave 是固定参数) show slave status;:查看配置 stop slave;停止备份 如果想在Slave上忽略一个库的复制,最好不要用binlog_ignore_db这个参数, 尽量使用
mysqldump --master-data -uroot -p test(需要备份的数据库名) > test.sql
binlog-do-db =test #只复制某个库
replicate-do-db =test #只复制某个库
replicate-ignore-db=mysql #不复制某个库
binlog_ignore-db=mysql #不复制某个库
MySQL的主从
标签: