mysql主从同步

1.mysql主从同步
1.1 主从同步介绍
- 实现数据自动同步的服务结构
- 主服务器:接受客户端访问连接
- 从服务器:自动同步主服务器数据
1.2 工作过程(主从同步原理)
-master
启用binlog日志
-slave
slave_io:复制master主机binlog日志文件里的SQL命令到本机的relay-log文件里
slave_sql:执行本机relay-log文件里的sql语句,实现与master数据一致
1.3 配置mysql主从同步
1.3.1 构建思路
- 配置主服务器
启用binlog日志,授权用户,查看binlog日志信息
- 配置从服务器
设置server_id
确保与主服务器数据一致
指定主库信息
命令格式:
change master to
master_host=“主库ip地址” , #主库ip地址
master_user=“用户名” , #主库授权用户
master_password=“密码” , #授权用户密码
master_log_file=“binlog日志”, #主库日志文件
master_log_pos=偏移量; #日志偏移量
启动slave程序
start slave;
stop slave; (停止slave服务)
查看状态信息
show slave status\G;

1.3.2 配置主服务器

[root@51 ~]# vim /etc/my.cnf
	[mysqld]	
	log_bin=master51     #启用binlog日志
	server_id=51	     #指定服务器id号.
...	
:wq
[root@51 ~]# systemctl restart mysqld
[root@51 ~]# ls /var/lib/mysql/master51.*
[root@51 ~]# mysql -uroot -p"123qqq...A"
  • 授权用户
    用户权限 replication slave
    用户名自定义
    客户端地址允许从库连接
    密码自定义

      mysql> grant replication slave on *.* to repluser@"%" identified by "123qqq...A";
      mysql> show master status\G;       #查看日志信息
      mysql> select user,host from mysql.user;	
    

    1.3.3 配置从服务器

    • 修改主配置文件
      指定server_id 不允许与主库server_id值相同

      [root@52 ~]# vim /etc/my.cnf
      [mysqld]	
      server_id=52          #指定服务器id
      ...	
      :wq
      [root@52 ~]# systemctl restart mysqld
      
    • 确保与主服务器数据一致
      在主服务器上备份数据,将备份文件拷贝给从服务器
      从服务器使用备份文件恢复数据
      在从服务器查看备份文件中的binlog日志信息

      [root@51 ~]# mysqldump -uroot -p123qqq...A --master-data db5 > /root/db5.sql
        #主库备份数据,--master-data记录当前备份数据对应的日志信息
      [root@51 ~]# scp /root/db5.sql  root@192.168.4.52:/opt/
      
      [root@52 ~]# mysql -uroot -p123qqq...A -e 'create database db5'
      [root@52 ~]# mysql -uroot -p123qqq...A  db5  < /opt/db5.sql 	#从服务器恢复数据
      [root@52 ~]# mysql -uroot -p123qqq...A -e 'use db5 ; show tables'
      [root@52 ~]# grep master51 /opt/db5.sql   #查看binlog日志名及偏移量   
      CHANGE MASTER TO MASTER_LOG_FILE='master51.000001', MASTER_LOG_POS=441;
      
      [root@52 ~]# mysql -uroot -p123qqq...A
      mysql> change master to  master_host="192.168.4.51" , master_user="repluser",
      -> master_password="123qqq...A" , master_log_file="master51.000001",master_log_pos=441;
      mysql> start slave ;
      mysql> show slave status\G;
      Master_Host: 192.168.4.51    #主库IP地址
      Slave_IO_Running: Yes        #io线程已运行
      Slave_SQL_Running: Yes       #sql线程已运行
      

    1.3.4 相关文件

      master.info        	   主库信息
      relay-log.info         中继日志信息	
      主机名-relay-bin.xxxxxx 中继日志
      主机名-relay-bin.index  索引文件
    

    1.4 排错

    Last_IO_Error:报错信息

    Last_SQL_Error:报错信息

    stop slave;
    根据提示解决问题
    start slave;
    show slave status\G;
    终极解决办法:
    删除相关文件的4种文件后 重启数据库服务,重新指定主服务器信息.
    drop user repluser;
    rm -rf /var/lib/mysql/master.info
    rm -rf /var/lib/mysql/mysql54*
    rm -rf /var/lib/mysql/relay-log.info
    1.5 验证模式
    1.5.1 添加授权用户(给客户端连接使用)
    1.5.2 客户端使用授权用户连接主服务器51 对数据做访问

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值