mysql主从复制

1、mysql主从同步-->异步复制
  1.1、主从互备
  1.2、如何实现mysql主从读写分离:
             中大型公司:通过程序(php,java)
     小公司代理软件:mysql-proxy,amoeba

    门户网站:分布式dbproxy(读写分离,hash负载均衡,健康检查)


2、mysql主从复制原理:
              master(主库):IO线程,必须开启binlig(mysql-bin.000003 )
              slave(从库):IO线程(取master中binlog到relay-log中继日志),sql线程(写relay-log中继日志的数据的)
             总结:从库io线程扔返回的主库日志,sql进程实时处理,所以异步;
     
     start slave开启同步-->-->从库IO向主库发起请求(主库验证)
           -->从库接收主库返回的binlog日志信息(记录在从库IO线程下的relay-log中继日志)

           -->sql线程实时把relay-log信息写入-->更新从库IO线程的master info;


   2.1、在master库打开binlog日志,指定log-bin路径和server-id不一致
   2.2、授权在master库里用户能连接slave库
   2.3、查看master库在加锁只读的状态下的Binlog,并对这个点的master做一个dump
   2.4、把master的dump信息恢复到slave库里
   2.5、登录slave库配置CHANGE MASTER TO保存到slave库的master info里

   2.6、在slave里开启start slave同步


3、mysql主从复制操作(一台服务器两个实例):
   假设:主库 master 3306(改server-id,开binlog,授权slave中的用户允许连接master取binlog日志)
            从库 slave  3307
            #ps -ef|grep mysql(启动mysql数据库服务)
            #/data/3306/mysql start(启动3306实例)
           #/data/3307/mysql start(启动3307实例)
          #ss -lnt|grep 330 (查看mysql实例是否正常启动)
 3.1、master:
#vi /data/3306/my.cnf(1、打开log-bin,指定路径log-bin = /data/3306/mysql-bin,
      2、确保server-id不一样,如server-id=1)
#egrep "log-bin|server-id" /data/3306/my.cnf(检查是否打开log-bin和确保server-id)
检查log-bin是否修改生效,打开binlog日志的两个方法:
 1、#ll /data/3306(查看3306master下面是否产生bin-log,如:mysql-bin.000003)
 2、#mysql -uroot -p123 -S /data/3306/mysql.sock -e "show variables like 'log_bin';"
slave里binlog可开可不开,如果做级联架构必须在slave里面开启binlog和设置log_slave_updates
#mysql -uroot -p123 -S /data/3306/mysql.sock(登录master)
mysql>grant replication salve on *.* to 'zdh'@'192.168.1%' identified by '123';(授权master库里的用户zdh能连接salve库,salve的网段是192.168.1)
mysql>flush privileges;(刷新到磁盘)
 3.2、slave:
     mysql>flush table with read lock;(给master表加锁,只读,在3306实例下,这个窗口不能断)
mysql>show master status;(查看master在上诉操作中只读这个点上的binlog)
#mysqldump -uroot -p'123' -S /data/3306/mysql.sock -A -B --events --master-data=2 >/opt/zdh.sql(在新窗口把master库dump到/opt/rep.sql)
mysql>show master status;(再看一次master里的binlog信息,确定在dump之后binlog是否改变,之前的锁表是否成功)
mysql>unlock tables;(master库解锁)
mysql>quit
#mysqldump -uroot -p'123' -S /data/3307/mysql.sock </opt/zdh.sql(把master库dump的信息恢复到salve库里)
#mysql -uroot -p'123' -S /data/3307/mysql.sock(登录slave库)
mysql>CHANGE MASTER TO
              MASTER_HOST='192.168.1.105', (master主机ip)
      MASTER_PORT=3306, (master端口)
     MASTER_USER='zdh',
                     MASTER_PASSWORD='123',
                     MASTER_LOG_FILE='mysql-bin.000003',
    MASTER_LOG_POS=456;
          (这个CHANGE MASTER TO的操作会放到master info里)
mysql>start slave;(开启slave同步)
mysql>show slave status\G(查看slave库里的sql和io进程是否yes,yes表示正常start同步,
                         结果出现Seconds_Behind_Master=0落后master库0秒表示正常)
3.3另一种mysql的主从同步:
在新窗口把master库dump到/opt/rep.sql时,把--master-data=2改成--master-data=1,然后
在CHANGE MASTER TO里面去掉MASTER_LOG_FILE='mysql-bin.000003',MASTER_LOG_POS=456这
两条信息,其他不变,即可;
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值