• 学习配置和使用 mysql 主从数据库


    实验环境:

    virtualbox + ubuntu 16.04.3 + mysql 5.7

    sudo apt-get install mysql-server mysql-client
    

    然后导出虚拟机,再导入虚拟机,至此就有2台虚拟服务器了。

    mysql -V 查看 mysql版本,最好采用相同版本的mysql。

    master 服务器ip: 192.168.1.168
    slave 服务器ip: 192.168.1.113
    同步的数据库: zhucong_test
    同步的用户名和密码都是: master_test

    主(master)服务器配置:

    1. 配置文件修改

    主mysql,/etc/mysql/my.cnf

    [mysqld]
    #sql_mode=STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
    #max_allowed_packet=100M
    log-bin = mysql-bin
    server-id=1
    
    #不同步的数据库
    binlog-ignore-db = mysql
    binlog-ignore-db = test
    binlog-ignore-db = information_schema
    binlog-ignore-db = sys
    #同步的数据库
    binlog-do-db = zhucong_test
    

    重启主服务器的mysql.

    show master status;
    

    修改 bind-address,/etc/mysql/mysql.conf.d/mysqld.cnf,找到 bind-address = 127.0.0.1并在该行的前面加#注释掉,变成#bind-address = 127.0.0.1,重启主服务器的mysql。这一步是为了让从服务器可以连接到主服务器的mysql。

    1. 主服务器添加一个用于主从的mysql用户,并赋予 REPLICATION SLAVE权限。
    mysql > create user 'master_test'@'%' identified by 'master_test';
    mysql > GRANT REPLICATION SLAVE ON *.* TO 'master_test'@'%';
    mysql > flush privileges; #刷新权限
    

    配置从(slave)服务器

    创建要同步数据库

    create database zhucong_test charset utf8 collate utf8_general_ci;
    

    把master数据库的数据dump一份导入到slave(非常重要)

    mysqldump -h 192.168.1.168 -uroot -p zhucong_test > source.sql #导出主(master)服务器的zhucong_test db的数据到从(slave)服务器上
    mysql  -uroot -p  zhucong_test < source.sql #导入数据到从(slave)服务器的zhucong_test数据库中
    

    修改从(slave)服务器mysql的配置文件,/etc/mysql/my.cnf

    [mysqld]
    #sql_mode=STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
    #max_allowed_packet=100M
    log-bin = mysql-bin
    server-id=2
    
    expire_logs_days=10
    #忽略同步的数据库
    binlog-ignore-db = mysql
    binlog-ignore-db = test
    binlog-ignore-db = information_schema
    binlog-ignore-db = sys
    #同步的数据库
    replicate-do-db = zhucong_test
    log-slave-updates
    slave-skip-errors=all
    slave-net-timeout=60
    

    重启从服务器的mysql,使用CHANGE MASTER TO语句指定主服务器信息,不要在配置文件中配置。该语言可以替代在配置文件中提供主服务器的信息,另外,不需要停止服务器,便可以为从服务器指定不同的主服务器。

    CHANGE MASTER TO MASTER_HOST='192.168.1.168',MASTER_USER='master_test',MASTER_PASSWORD='master_test',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=0;
    

    此处指定 MASTER_LOG_POS的值为0,因为要从日志的开始位置开始读。

    start slave; # 开始复制
    show slave statusG; # 查看从服务器的设置是否正确
    

    当从服务器的mysql显示的状态:

    Slave_IO_Running: Yes
    Slave_SQL_Running: Yes
    

    说明配置成功了

    1. Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work.

    解决方法: 停止从服务器的mysql,并将auto.cnf 文件删除。如:

    sudo service mysql stop
    sudo mv /var/lib/mysql/auto.cnf /var/lib/mysql/auto.cnf.bak
    

    参考书籍:《PHP核心技术与最佳实践》

    Refences

    1. MHA集群报错:The slave I/O thread stops because master and slave have equal MySQL server UUIDs 了解到mysql 5.7配置文件的地址
    2. "Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs 从服务器中 相同 server uuids的解决方法
    3. mysql 主从配置,slave master 设置
    4. mysql主从简单配置
    5. MySQL.ERROR 1133 (42000): Can't find any matching row in the user table
    6. MySQL创建用户和授权
  • 相关阅读:
    python开发函数进阶:内置函数
    学习笔记之机器学习(Machine Learning)
    学习笔记之Visual Studio Code (VSCode) & Clang
    学习笔记之Supervised Learning with scikit-learn | DataCamp
    学习笔记之1001 Inventions That Changed the World
    学习笔记之Machine Learning by Andrew Ng | Stanford University | Coursera
    学习笔记之Everything
    学习笔记之HTML
    学习笔记之Python全栈开发/人工智能公开课_腾讯课堂
    学习笔记之曾国藩家书
  • 原文地址:https://www.cnblogs.com/fsong/p/12673652.html
Copyright © 2020-2023  润新知