mysql中主从_MySQL的主从

以下是个人实例操作得出的结论:

mysql的主从同步是一个很成熟的架构:

优点:

①:在从服务器可以执行查询工作,降低主服务器压力(所谓的读写分离)

②:在从主服务器进行备份,避免备份期间影响主流服务器服务(不太懂是到底在从还是主上面进行操作)

③:当主服务出现问题时,可以切换到从服务器。

配置开始

两台服务器

192.168.0.1 主服务器 master

192.168.0.2 从服务器 slave

主服务器

配置主服务器的my.ini

在最下面添加

read-only=0  #主机读写权限,读写都可以

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-host=10.0.0.100          #从服务器连接主服务器的帐号         master-user=slave         #从服务器连接主服务器的帐号密码          master-password='slave'         #主服务器端口           master-port=3306          #同步时间间隔为60秒         master-connect-retry=10

#日志文件

master_log_file = 'mysql-bin.000008',

#          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;:先锁定表mysqldump --master-data -uroot -p test(需要备份的数据库名) > test.sql

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这个参数,

尽量使用

binlog-do-db =test #只复制某个库

replicate-do-db =test #只复制某个库

replicate-ignore-db=mysql #不复制某个库

binlog_ignore-db=mysql #不复制某个库

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值