MySQL主从复制的配置

技术背景
在做web应用系统中,如果数据库出现了性能瓶颈,而你又是使用的MySQL数据库,那么就可以考虑采用数据库集群的方式来实现查询负载了。因为一般来讲一个系统中数据库的查询操作比更新操作要多的多,因此通过多台查询服务器将数据库的查询分担到不同的查询数据库从而提高数据库的查询效率。
MySQL的主从同步是一个很成熟的架构,优点为:
①在从服务器可以执行查询工作(即我们常说的读功能),降低主服务器压力;②在从主服务器进行备份,避免备份期间影响主服务器服务;③当主服务器出现问题时,可以切换到从服务器。
原理
MySQL同步功能由3个线程(master上1个,slave上2个)来实现。从库执行 START SLAVE 语句后,slave就创建一个I/O线程。I/O线程连接到master上,并请求master发送二进制日志中的语句。master创建一个线程来把日志的内容发送到slave上。这个线程在master上执行 SHOW PROCESSLIST 语句后的结果中的 Binlog Dump 线程便是。slave上的I/O线程读取master的 Binlog Dump 线程发送的语句,并且把它们拷贝到其数据目录下的中继日志(relay logs)中。第三个是SQL线程,salve用它来读取中继日志,然后执行它们来更新数据。
在MySQL数据库中,支持单项、异步复制。在复制过程中,一个服务器充当主服务器,而另外一台服务器充当从服务器。如下图所示。此时主服务器会将更新信息写入到一个特定的二进制文件中。并会维护文件的一个索引用来跟踪日志循环。这个日志可以记录并发送到从服务器的更新中去。
当一台从服务器连接到主服务器时,从服务器会通知主服器从服务器的日志文件中读取最后一次成功更新的位置。然后从服务器会接收从那个时刻起发生的任何更新,然后锁住并等到主服务器通知新的更新
在Windows(主)与centos7(从)上搭建MySQL实现主从复制
1. 网络测试
必须保证两台数据库的IP能够ping通,端口能够打开,防火墙关闭
2.配置MySQL配置文件
server-id = 1            #区别服务器的标识符,只要唯一就行,默认1
log-bin=mysql-bin        #开启二进制日志
binlog-do-db=su          #--要同步的数据库名称,多个写多行
binlog_format=mixed      #日志混合
3.分配账号给从服务器
grant all privileges on *.* to ‘su’@'192.168.206.186' identified by '12345'
参数说明:
       grant : 授权
       replication slave ,all privileges 操作动作   select update delete
       on 作用范围
       *: 库
       *: 表
       to:指定账号
       user1,backuser:账号
       @ 接 访问来源
       192.168.134 允许从192.168.1.%用backuser连接  
       identified by : 设置密码 
4.查看用户
 查询用户验证:
 select distinct user from mysql.user
 show grants for backuser@'192.168.1.242'
 show master status

其中File是表示日志记录的文件,而Position则是表示当前日志在文件中的位置,这个也是从数据库服务器上执行复制操作必须的标识,后面的两个字段分别表示要记录的数据库名称和不需要记录的数据库名称,我们也可以在配置文件中进行配置
5.配置从服务器
  log_bin           = mysql-bin  可以不开启
  server_id         = 12  // 必须的
  relay_log         = mysql-relay-bin // 中继日志
  log_slave_updates = 1  // slave将复制事件写进自己的二进制日志
  read_only         = 1
6.向slave服务器配置
告诉备库如何连接主库并重放二进制日志
mysql中执行
change master to master_host='192.168.1.241', master_user='bakuser',master_password='123456',master_port='3306',master_log_file='mysql-bin.000001',master_log_pos=0;
master_log_pos=0 表示日志从头开始读起
7. 检查复制是否正确执行
 show slave status
 Slave_IO_State Slave_IO_Running 
 Slave_SQL_Running
8. 开始复制

     start slave
     show slave status
     查看线程  show processlist\G
     Slave_IO_Running:YES
     Slave_SQL_Running:YES
     上述的值都变味yes则成功
     如果失败,查看log-error日志,确认问题,修正问题
MySQL的主从同步是一个很成熟的架构,优点为:
主从同步优点
①在从服务器可以执行查询工作(即我们常说的读功能),降低主服务器压力;
②在从主服务器进行备份,避免备份期间影响主服务器服务;
③当主服务器出现问题时,可以切换到从服务器。
所以我在项目部署和实施中经常会采用这种方案.
mysql主从方案主要用途
1.读写分离,使数据库能支撑更大的并发。在报表中尤其重要。由于部分报表sql语句非常的慢,导致锁表,影响前台服务。如果前台使用master,报表使用slave,那么报表sql将不会造成前台锁,保证了前台速度。
2.发扬不同表引擎的优点。目前Myisam表的查询速度比innodb略快,而写入并发innodb比myIsam要好。那么,我们可以使用innodb作为 master,处理高并发写入,使用master作为slave,接受查询。或在myisam slave中建立全文索引,解决innodb无全文索引的弱点。
3.热备,slave和master的数据“准实时”同步
安装错误提示
1:其中,作为主机,server-id必须为1. 似乎没有这个规定。。
2:binlog_ignore_db为忽略复制的db。
主服务器最好不要使用binlog_ignore_db,否则binlog就不完整了,不能回到过去某个时间点,可以通过从服务器忽略不想复制的库。
3:grant replication slave, reload, super on 安全考虑,不要给super
4:master-host = 192.168.0.3 不用通过配置文件设置主服务器信息,而应该使用change master to这样的sql
踏坑方向
网络ping
日志位置
用户分配

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值