• MySQL主从同步


    ©网络研究院

    安装环境

    基本需求

    ——采用CentOS7系统搭建MySQL服务器

    ——关闭防火墙

    ——关闭SELinux

    ——软件 MySQL-5.7.17-1

    安装MySQL 续(1)

    从官方下载RPM软件包

    ——http://dev.mysql.com/downloads/mysql/

    ——适用于当前系统的bundle集合包

    mysql-community-client //客户端应用程序

    mysql-community-common //数据库和客户端库共享文件

    mysql-community-devel //客户端应用程序的库和头文件

    mysql-community-embedded //嵌入式函数库

    mysql-community-embedded-compat //嵌入式兼容函数库

    mysql-community-embedded-devel //头文件和库文件作为MySQL的嵌入式库文件

    mysql-community-libs //MySQL数据库客户端应用程序的共享库

    mysql-community-libs-compat //客户端应用程序的共享兼容库

    安装MySQL 续(2)

    采用U升级安装,可替换冲突文件

    [root@localhost ~]# tar –xf  mysql-5.7.17.tar  -C  /root/mysql

    [root@localhost mysql]# yum -y install net-tools // //安装MySQL需要的依赖包

    [root@localhost ~]# yum -y install perl-Data-Dumper //安装MySQL需要的依赖包

    [root@localhost ~]# yum -y install perl-JSON //安装MySQL需要的依赖

    [root@localhost ~]# rpm -Uvh mysql-community-*.rpm //升级安装MySQL

    启动MySQL数据库服务

    [root@localhost ~]# systemctl start mysqld //启动服务

    [root@localhost ~]# ps -C mysqld //查看服务进程

    [root@localhost ~]# systemctl status mysqld //查看服务状态

    [root@localhost ~]# ss -anptul | grep mysqld //查看服务状态

    [root@localhost ~]# systemctl enable mysqld //设置服务开机自启

    MySQL服务相关参数

    主配置文件:/etc/my.cnf

    数据库目录:/var/lib/mysql

    默认端口号:3306

    进程名:mysqld

    传输协议:TCP

    进程所有者:mysql

    进程所属组:mysql

    MySQL初始配置

    修改root口令

    ——默认的数据库管理账号 root 允许从 localhost 访问

    ——首次登录密码在安装时随机生成

    ——存储在错误日志文件里 /var/log/mysql.log

    [root@localhost ~]# grep -i password /var/log/mysqld.log

    用初始密码登录MySQL服务器

    [root@localhost ~]# mysql -uroot –p’0Yy7GFBpud:g’

    修改MySQL初始密码

    密码安全策略变量:validate_password_policy

    mysql> set global validate_password_policy=0; //只验证长度(LOW策略)默认为1

    mysql> set global validate_password_length=4; //修改密码长度,默认是 8个字符

    修改MySQL初始密码 续(1)

    操作方法

    用 alter user 重设口令

    mysql> alter user root@“localhost” identified by “1234”; //修改登录密码

    mysql> exit

    [root@localhost ~]# mysql -uroot -p123456 //使用新密码重新登录

    永久修改密码策略

    修改/etc/my.cnf

    [root@localhost ~]# vim /etc/my.cnf

    [mysqld]

    validate_password_policy=0 //密码验证策略

    validate_password_length=4 //密码长度

    [root@localhost ~]# systemctl restart mysqld //重启MySQL

    案例拓扑

    一主一丛案例拓扑

    单项复制时,建议把从库设为只读

    主从同步原理

    Master记录数据更改操作

    启用binlog日志

    设置binlog日志格式

    设置server_id

    Slave运行2个线程

    Slave_IO:复制master主机binlog日志文件里的SQL到本机的relay-log文件里

    Slave_SQL:执行本机relay_log文件里的SQL语句重现Master的数据操作

    主从同步构建思路

    确保数据相同,从库必须要有主库上的数据

    主服务器

    启用binlog日志、授权用户、查看当前正在使用的日志

    从服务器

    设置server_id,指定主库信息

    测试配置

    客户端连接主库写入数据,在从库上也能查到

    配置主服务器

    [root@localhost]# vim /etc/my.cnf

    重启服务

    systemctl  restart  mysqld

    创建授权用户

    授权用户

    允许授权用户 从IP 192.168.0.20 访问

    对所有库(默认只允许对单个表)有同步权限

    mysql> GRANT   REPLICATION   SLAVE   ON   *.*   TO

    mysql> 用户名@”从库IP地址”  IDENTIFIED BY “密码”;

    replication  slave        //同步数据的权限

    配置主服务器(续1)

    查看Master状态,记住当前的日志文件名和偏移量值

    mysql>  show master status;

    配置从服务器

    从库指定server_id  不允许与主库sever_id的值相同

    [root@slave ~]# vim /etc/my.cnf

    [mysqld]

    server_id=值

    [root@slave ~]# systemctl restart mysqld 重启服务

    配置从服务器(续1)

    指定主库信息

    mysql> CHANGE  MASTER   TO

    >MASTER_HOST=“192.168.0.10”, //主库的IP地址

    >MASTER_USER=“lw”  , //主库授权的用户

    >MASTER_PASSWORD=“123456”  , //授权用户的密码

    >MASTER_LOG_FILE=“localhost-bin.000002” , //binlog日志文件

    >MASTER_LOG_POS=334; //日志文件的便宜值

    mysql> START   SLAVE; //启动Slave进程

    配置从服务器(续2)

    配置从服务器(续3)

    这两个值必须同时是yes状态

    Slave_IO_Running: Yes

    Slave_SQL_Running: Yes

    配置从服务器(续4)

    从库启动成功后,数据库目录下新增加四个类型相关文件

    master.info //存放主库信息

    relay-log.info //中继日志信息

    主机名-relay-bin.index //索引文件

    主机名-relay-bin.xxxxxx //中继日志

    测试配置

    客户端测试

    在主库授权一个用户然后客户端用授权用户登录测试

    客户端登录

    测试配置(续1)

    用户对数据库进行创建和写入操作

    测试配置(续2)

    从库进行验证

    主从同步结构

    基本应用

     关注了解更多最新消息。icon-default.png?t=M85Bhttps://mp.weixin.qq.com/s/cuAXo-h1ERk98juZC0wVdw

  • 相关阅读:
    【RocketMQ】顺序消息实现原理
    快速或安全的访问std::vector实例的方法, std::vector的插入排序
    SLAM从入门到精通(gmapping建图)
    LeetCode 1 两数之和
    [Vue] 25.Vue.js过渡与动画:使用transition标签实现单元素/组件的过渡和动画效果
    NOIP2023模拟9联测30 D. 金牌
    webstorage
    动态规划43(Leetcode91解码方法)
    NoClassDefFoundError: org/tukaani/xz/FilterOptions
    python文件处理:解析docx/word文件文字、图片、复选框
  • 原文地址:https://blog.csdn.net/qq_29607687/article/details/128179892