• MySQL学习笔记27


    MySQL主从复制的核心思路:

    1、slave必须安装相同版本mysql数据库软件。

    2、master端必须开启二进制日志,slave端必须开启relay log 日志。

    3、master主服务器和slave从服务器的server-id号不能一致。

    4、slave端配置向master端来同步数据。

    master端必须创建一个复制用户。

    保证master和slave端初始数据一致。

    配置主从复制(slave端)。

    MySQL主从复制的具体实现:

    第一步:上传mysql软件包到master和slave服务器。

    第二步:在Master端安装、初始化以及运行mysql软件。

    安装要求:

    vim mysql.sh

    1. #!/bin/bash
    2. yum install libaio -y
    3. tar -xf mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz
    4. rm -rf /usr/local/mysql
    5. mv mysql-5.7.31-linux-glibc2.12-x86_64 /usr/local/mysql
    6. useradd -r -s /sbin/nologin mysql
    7. rm -rf /etc/my.cnf
    8. cd /usr/local/mysql
    9. mkdir mysql-files
    10. chown mysql:mysql mysql-files
    11. chmod 750 mysql-files
    12. bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql &> /root/password.txt
    13. bin/mysql_ssl_rsa_setup --datadir=/usr/local/mysql/data
    14. cp support-files/mysql.server /etc/init.d/mysqld
    15. service mysqld start
    16. echo 'export PATH=$PATH:/usr/local/mysql/bin' >> /etc/profile
    17. source /etc/profile

    然后是运行脚本:

    sh mysql.sh

    安全配置:

    mysql_secure_installation

    配置my.cnf(重点是开启二进制日志)

    1. # cd /usr/local/mysql
    2. # vim my.cnf
    3. [mysqld]
    4. basedir=/usr/local/mysql
    5. datadir=/usr/local/mysql/data
    6. socket=/tmp/mysql.sock
    7. port=3306
    8. log-error=/usr/local/mysql/data/master.err
    9. log-bin=/usr/local/mysql/data/binlog => 一定要开启二进制日志
    10. server-id=10
    11. character_set_server=utf8mb4 => utf8mb4相当于utf8升级版
    1. 配置完成后,重启mysqld服务
    2. # service mysqld restart
    3. # chkconfig --add mysqld
    4. # chkconfig mysqld on

    在Slave从服务器端安装mysql软件(不需要初始化)。

    安装mysql软件:

    1. # vim mysql.sh
    2. #!/bin/bash
    3. yum install libaio -y
    4. tar -xf mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz
    5. rm -rf /usr/local/mysql
    6. mv mysql-5.7.31-linux-glibc2.12-x86_64 /usr/local/mysql
    7. useradd -r -s /sbin/nologin mysql
    8. rm -rf /etc/my.cnf
    9. cd /usr/local/mysql
    10. mkdir mysql-files
    11. chown mysql:mysql mysql-files
    12. chmod 750 mysql-files
    13. cp support-files/mysql.server /etc/init.d/mysqld
    14. echo 'export PATH=$PATH:/usr/local/mysql/bin' >> /etc/profile
    15. source /etc/profile

    相对于主服务器MySQL的安装与配置,从服务器端不需要进行初始化操作,因为其数据将来都来自于主服务器。

    配置my.cnf文件:

    1. # cd /usr/local/mysql
    2. # vim my.cnf
    3. [mysqld]
    4. basedir=/usr/local/mysql
    5. datadir=/usr/local/mysql/data
    6. socket=/tmp/mysql.sock
    7. port=3310
    8. log-error=/usr/local/mysql/data/slave.err
    9. relay-log=/usr/local/mysql/data/relaylog => 开启中继日志
    10. server-id=100
    11. character_set_server=utf8mb4

    把master主服务器的数据目录同步到slave从服务器

     

    a. 把MASTER服务器中的mysqld停止掉

    # service mysqld stop

    b. 把MASTER服务器中的/usr/local/mysql/data目录下的auto.cnf文件删除

    # rm -rf /usr/local/mysql/data/auto.cnf

    没安装一个mysql软件,其data数据目录都会产生一个auto.cnf文件,里面是一个唯一性的编号,相当于我们每个人的身份证号码。

    c. 把MASTER服务器中/usr/local/mysql中的data目录拷贝一份到SLAVE从服务器的/usr/local/mysql目录

    # rsync -av /usr/local/mysql/data root@10.1.1.100:/usr/local/mysql/

    d. 同步完成后,把主服务器与从服务器中的mysqld启动

    # service mysqld start
    直接更改/usr/local/mysql目录的权限:
    # chown -R mysql.mysql /usr/local/mysql

    配置MASTER-SLAVE主从同步

    a. 在MASTER主服务器中创建一个账号,专门用于实现数据同步

    MySQL5.7及以下版本:

    mysql> grant replication slave on *.* to 'slave'@'10.1.1.%' identified by '123';

    MySQL新版本中:

    1. mysql> create user 'slave'@'10.1.1.%' identified by '123';
    2. mysql> grant replication slave on *.* to 'slave'@'10.1.1.%';
    3. mysql> flush privileges;

    b. 在MASTER中锁表,然后查看二进制文件的名称及位置

    1. mysql> show master status;
    2. +---------------+----------+--------------+------------------+-------------------+
    3. | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
    4. +---------------+----------+--------------+------------------+-------------------+
    5. | binlog.000002 | 601 | | | |
    6. +---------------+----------+--------------+------------------+-------------------+
    7. 1 row in set (0.00 sec)

    在SLAVE从服务器中,使用change master to指定主服务器,并实现数据同步。

    1. mysql> change master to master_host='192.168.17.126',master_user='slave',master_password='123',master_port=3306,master_log_file='binlog.000002',master_log_pos=601;
    2. Query OK, 0 rows affected, 2 warnings (0.01 sec)

    启动slave数据同步:

    1. mysql> start slave;
    2. mysql> show slave status\G

    主master服务器解锁:

    mysql> unlock tables;

     

    1. 主从复制必须保证两台数据库实例的==server-id不一致==

    2. 主服务器==必须开启二进制日志==;从服务器==必须开启中继日志==

    3. 主从复制搭建==必须保证初始数据一致==

    4. 主服务器必须要给从服务器==创建一个复制用户,并授予复制权限==

    5. Master—>Slave架构,==主写会同步到从==;而==从写不会同步到主==

  • 相关阅读:
    React Hooks
    Spring事务失效的12种场景
    get_cli_args函数
    Python数据权限的管理通常涉及到几个关键组件:身份验证,、授权和访问控制。这通常是通过使用数据库、ORM(对象关系映射)框架、API框架和中间件
    Python绘图入门:使用Matplotlib绘制柱状图
    LeetCode 面试题 04.01. 节点间通路
    三电系统连接器:驱动未来的创新纽带
    Mysql 45讲学习笔记(三十七)内部临时表
    如何通过设备综合效率OEE确定工厂需要改进的领域
    ModStartBlog v8.2.0 独立友情链接页面,博客列表样式优化
  • 原文地址:https://blog.csdn.net/chang_chunhua/article/details/133439234