美文网首页
Mysql主从复制的配置

Mysql主从复制的配置

作者: 黄靠谱 | 来源:发表于2019-01-23 18:38 被阅读94次

    参考

    https://www.cnblogs.com/superfat/p/5267449.html

    概论

    Mysql的读写分离的前提就是 主从复制,只有配置好了主从复制,才可以使用中间件(sharding-jdbc)来执行代码层面方便安全的读写分离。
    下面的例子演示的一主一从的配置(一个windows ,一个linux 虚拟机),Mysql的版本 5.7.19,配的过程有很多坑,一个个迈,不过最终还是成功了。

    Mysql 主从复制的配置过程

    从数据库IP地址: 192.168.29.129
    主数据库IP地址: 192.168.29.1

    1. 主服务器给从服务器授权: 授权用户 synchzs /123456
      登录mysql以后执行授权命令(授权了 SLAVE权限和File权限)
    GRANT REPLICATION SLAVE ON *.* to 'synchzs'@'192.168.29.129' identified by '123456';
    
    GRANT ALL PRIVILEGES ON *.* to 'synchzs'@'192.168.29.129' identified by '123456' WITH GRANT OPTION;
    FLUSH PRIVILEGES;
    
    1. 配置主服务器(在 %datadir%/binlog文件夹下面生成 mysql-bin.0001一些列日志)
    [mysqld]
    server-id=1
    log-bin=./binlog/mysql-bin
    binlog_format=mixed
    binlog-do-db=testsync
    binlog-ignore-db=eedu
    
    1. 重启主服务器(可能需要权限 windows)
    • 停止:net stop mysql
    • 启动:net start mysql
    • 登录mysql: show master status; 查看是否配置成功,查看 bin-log的文件名和index下标
    1. 在从数据库创建对应的准备主从复制的数据库

    2. 修改从数据库的配置文件:一定要有 server-id 的字段

    [mysqld]
    server-id=129
    port = 3306
    user = mysql
    basedir=/usr/share/mysql
    datadir=/var/lib/mysql
    tmpdir=/tmp
    
    1. 配置从数据库
    • 先关闭slave(如果你以前配置过主从的话,一定要先关闭)
    • 通过命令的形式指定 主从关系
    • 再按照新的配置 启动slave
    stop slave;
    
    change master to master_host='192.168.29.1',master_port=3306,master_user='synchzs',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=800; 
    
    start slave;
    

    参数解释:

    • MASTER_HOST : 设置要连接的主服务器的ip地址

    • MASTER_USER : 设置要连接的主服务器的用户名

    • MASTER_PASSWORD : 设置要连接的主服务器的密码

    • MASTER_LOG_FILE : 设置要连接的主服务器的bin日志的日志名称,即第3步得到的信息

    • MASTER_LOG_POS : 设置要连接的主服务器的bin日志的记录位置,即第3步得到的信息,(这里注意,最后一项不需要加引号。否则配置失败)

    1. 从服务器通过 show slave status \G; 命令,查看自己和主服务器的链接情况
      如果show slave status显示 Slave_IO_Running: NO Slave_SQL_Running: No 的话,重启一下主从服务器,等都显示Yes的时候,主从复制就成功了

    2. 在主数据库 创建一张 student表,并且插入一条数据。插入之后,通过从服务器读取,可以读取成功。

    注意事项

    1. Slave授权、file授权,最好都做
    2. 测试网络是否正常,所以在从服务器可以先尝试通过命令远程连接主服务器,从而排除网络的问题,和file权限的问题
    远程连接尝试
    mysql -usynchzs -p123456 -h 192.168.29.1
    show databases; //查看授权过了的数据库
    
    1. 排查问题的时候,可以尝试阅读日志文件,默认mysql的日志文件在dataDir配置的路径下面

    2. 其实可以在从服务器设置 read-only=1 ,来避免普通用户直接往 从库里面插入数据,但是root用户仍然有权限插入数据,除非锁住全部的表

    3. 如果从库的数据库名称和主库不一样,需要在从库的my.cnf里面配置别名

    //主库的eedu  从库的别名是eedu_hbk2 这个库
    replicate-rewrite-db = eedu -> eedu_hbk2
    

    相关文章

      网友评论

          本文标题:Mysql主从复制的配置

          本文链接:https://www.haomeiwen.com/subject/fpysjqtx.html