当前位置:Gxlcms > 数据库问题 > MySQL的主从

MySQL的主从

时间:2021-07-01 10:21:17 帮助过:2人阅读

以下是个人实例操作得出的结论: 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 #不复制某个库

MySQL的主从

标签:

人气教程排行