本文共 4714 字,大约阅读时间需要 15 分钟。
1.3配置mysql主从同步
1)服务器角色 client 50 master 51 slave 52注:本次实验需192.168.4.50~56共七台虚拟机
```````````````````````````````````````````````````````````````````````````
2)配置主服务器 51 启用binlog日志文件 ]#vim /etc/my.cnf[mysqld]
log_bin=master51(日志文件名) server_id=51binlog_format="mixed" #指定日志格式,本次实验没有用,不用加
]#ls /var/lib/mysql/master51.*
用户授权
mysql>grant replication slave on *.* to 用户名@"%" identified by "密码";查看binlog日志信息
mysql>show master status; +-----------------+----------+--------------+------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +-----------------+----------+--------------+------------------+-------------------+ | master51.000001 | 440 | | | | +-----------------+----------+--------------+------------------+-------------------+ -------------------------------------------------------------------------------------------------------------------3)配置从服务器 52
指定server_id ]#vim /etc/my.cnf [mysqld] server_id=52 ]#重启 指定主服务器信息 mysql>change master to master_host="192.168.4.51(主服务器ip)",master_user="用户名(主服务器授权的用户)",master_password="密码(主服务器授权的密码)",master_log_file="master51.000001(binlog日志文件名)",master_log_pos=440(偏移量);启动slave进程
mysql>show slave status; mysql>start slave; mysql>show slave status\G; Slave_IO_Running: Yes Slave_SQL_Running: Yes##############################################################
[从库]排错:进去先看mysql>show slave status;
Slave_IO_Running: Connecting Slave_SQL_Running: Yes Last_IO_Error: 报错信息.... Last_SQL_Error: 报错信息...查主服务器是否有该用户
1.密码可能不对: ]#cat /var/lib/mysql/master.info(里面包含用户密码) mysql>set password for 用户名@"%"=password("新密码");mysql>stop slave;先关从服务
哪部分错了就改哪部分 mysql>cahnge master to master_user="用户",master_password="密码"; mysql>start slave;mysql>show slave status;
Slave_IO_Running: Yes
Slave_SQL_Running: No分析:从库执行中继日志文件中的改密码时用户不存在则报错,需在从库增该用户
------------------------------------------------------------------- 2.用户不存在: Slave_IO_Running: Connecting Slave_SQL_Running: Yes Last_IO_Error: 报错信息.... Last_SQL_Error: 报错信息... 原因:在主库授权在从库指定的用户 再从库刷新,stop slave; start slave; show slave status; 3.用户名写错了 把进程停了,修改用户信息,再启进程 stop slave; change master to master_user="",master_password=""; start slave; show slave status\G4.没有重置初始密码
5.binlog日志文件写错了(或文件前面多写了个空格)
stop slave change master to master_file="binlog日志文件"; ############################################################-------从库相关文件:
中继日志文件:/var/lib/mysql/host52(主机名)-relay-bin.index #索引文件 /var/lib/mysql/host52(主机名)-relay-bin.编号 中继日志信息文件:/var/lib/mysql/relay-log.info 主库信息 :/var/lib/mysql/master.info 删了这类文件=主从还原 1.4验证配置 1)在主服务器添加访问数据的连接用户 create database db7; grant all on db7.* to 用户名@"%" identitfied by "密码"; 2)在客户端连接主服务器,对数据进行操作 mysql>mysql -u用户 -p密码 3)在从服务器本机查看是否和主服务器的数据一致一主多从:1.给当前主服务器51 再配合置一台从服务器53
2.在没有配置为从服务器之前,要有主服务器上的数据mysql>source /root/db7.sql #要在库里操作
3.设置新增从库主机的server_id 4.指定主服务器信息 ]#mysql -h192.168.4.51 -u主库授权从库的用户名 -p密码 (仅验证是否可以登陆) 本地指定主库信息mysql>change master to masater_host="",master_user="",master_password="", master_log_file="",master_log_pos=; 参考主服务器的binlog日志 5.启动slave进程 mysql>start slave; 6.查看进程信息 mysql>show slave status\G; Slave_IO_Running: Yes Slave_SQL_Running: Yes7.客户端测试
客户端连接主数据库访问数据,执行建库建表插入等操作 分别在从服务器本机查看数据 主从从: 给当前的从服务器52 配置1台从服务器54 配置52(主兼从) 启用binlog日志 ]#vim /etc/my.cnf log_bin=master52 server_id=52 log_slave_updates 允许链式复制 ]#重启用户授权
mysql>show slave status\G; 查看原来的从服务状态Yes mysql>grant replication slave on *.* to 用户名@"%" identified by "密码"; 查看binlog日志信息 mysql>show master status;准备同步:
完全备份库mysqldump -u -p 库> 文件 拷贝到从服务器 配置54(从) 使用备份文件恢复数据 建库(与主库的完全备份的库名一致) 进库 source 备份数据的文件 指定server_id ]#vim /etc/my.cnf server_id=54 ]#重启 指定主库信息mysql>change master to master_host="",master_user="",master_password="",
master_log_file="",master_log_pos= ;#可参考主库binlog日志信息mysql> start slave;
mysql> show slave status\G Slave_IO_Running: Yes Slave_SQL_Running: Yes客户端测试
连接第一个主服务器执行操作 查看所有从服务器上的数据变化主主结构 : 把数据库服务器55和56配为主主
2.2mysql主从复制模式 异步复制模式? 默认的 ]主库接受到客户请求后,处理完事务后,立即将结果返给客户端,不去关系从库是否已经接收并处理 客户体验度高,访问从库可能没有数据 全同步复制模式? ]当主库执行完一次事务,且所有从库都接受并处理之后,才返回给客户端 客户体验度差,数据同步好半同步模式?
]介于两种模式之间,主库执行一次事务后,等待至少一个从库接受并写到relay log中才返回给客户端2.3 Mysql主从同步常用选项(/etc/my.cnf)
2.3.1 用于主服务器的配置选项 binlog_do_db=数据库名 [只允许同步的库] binlog_ignore_db=数据库名 [不允许同步的库] 2.3.2 用于从服务器的配置选项 log_slave_updates [记录从库更新,允许链式复制] replicate_do_db=库 [仅同步的库] replicate_ignore_db=库 [仅不同步的库] relay_log=日志名 [自定义中继日志文件名]
主库配置选项,适用于master服务器
从库配置选项,适用于slave服务器
转载地址:http://lriqi.baihongyu.com/