zoukankan      html  css  js  c++  java
  • 【知识分享】mysql 8.0 搭建主从(基于已有数据的数据库)

    MySQL 8.0 搭建主从(基于已存在数据库搭建)

    TOC

    第一步:检查主库配置文件

    在主库服务器操作

    检查主库的配置文件中是否设置了以下参数:

    #【read_only】虽然主库不需要这个参数,但可能以后会发生主从切换,会需要此参数,所以添加此参数并设置为=on,但是注释掉使其不生效
    # read_only=on
    
    #【log_bin】主从复制依赖于mysql的二进制日志,开启主从复制的必要前提,需要设置这个参数
    # 例子:log_bin=/dbdata/mysql3306/log/mysql-bin
    log_bin=参照例子
    
    #【server_id】主从复制中各节点的身份id,主库与从库的server_id不能相同,一般设置为正整数
    server_id=正整数类型,主库从库的server_id不能相同
    
    #【relay_log】从节点回放日志存放路径,主库也需要设置,方便后期主从切换
    # 例子:relay_log=/dbdata/mysql3306/log/mysql-relay-bin
    relay_log=参照例子
    
    # 固定参数
    gtid_mode=ON
    enforce-gtid-consistency=true
    log-slave-updates=1
    relay-log-info-repository=TABLE
    relay_log_recovery=1
    master-info-repository=TABLE
    binlog-format=row

    如果发现配置文件中没有这些参数怎么办?
    其中一部分参数支持动态修改即mysql不关机在线修改,另一部分不支持在线修改,我们先讨论可在线修改的参数

    • read_only,server_id,gtid_mode,enforce-gtid-consistency,relay-log-info-repository,master-info-repository,binlog-format
      以上的参数支持在线动态修改,在主库不关机的情况下,可以登录mysql进行设置,设置完成后,在配置文件中添加上,保证运行时的参数和配置文件的参数设置保持一致就行。
    mysql -uroot -p
    mysql > set global read_only=off;
    mysql > set global server_id=数字类型,与从库不同;
    mysql > set global gtid_mode=on;
    mysql > set global enforce-gtid-consistency=on;
    mysql > set global relay-log-info-repository=table;
    mysql > set global master-info-repository=table;
    mysql > set global binlog-format=row;
    • 以下参数不支持动态修改,如果配置文件没有设置请找DBA解决,最好不要自行操作
      relay_log
      log_bin
      relay_log_recovery
      log_slave_updates
      log_slave_updates

    第二步:拷贝配置文件到从库服务器

    主库配置文件检查无误后,直接将主库的配置文件拷贝到从库服务器,并修改与检查以下参数:

    【read_only】从库不允许一般用户进行写操作,请配置read_only=on即删掉read_only=on前的“#”(取消注释)

    read_only=on

    【server_id】主从间的身份id,不能与主库的server_id相同,可以设置为IP地址最后两位

    server_id=正整数类型,主库从库的server_id不能相同

    第三步:安装从库

    • 【保证版本相同】请选择与主库版本相同的MySQL,下载其二进制压缩包
    • 【保证结构相同】为了保证从库与主库的高度一致,我们使其软件目录结构也一致,方便后期主从切换等一系列操作!
    • 补充说明:以下从库设置的所有路径都是在模仿主库的设置,真实情况下,请根据自己服务器的文件路径情况进行设置。
    • 安装步骤1 【解压压缩包 + 创建目录 + 目录授权】
      对照截图右侧从库服务器执行的命令进行操作。注意!!!!下方截图中tree命令指定是只指定了3层,一般3层足以,但建议多指定几层,观察具体情况。

    • 安装步骤2 【移动配置文件】
      将修改好的从库配置文件放到对应目录,因为例子中主库的配置文件放在了/dbdata/mysql3306/下,所以此时也放在这下面
    cp 修改好的从库配置文件 /dbdata/mysql3306/
    # 再授权一次
    chown -R mysq.mysql /dbdata/mysql3306/
    • 安装步骤3 【初始化】
      注意!!!!此时将初始化mysql,下方的命令为非安全初始化,可以免密登录,完成后可以启动从库,但务必不要修改root密码,不要操作从库,不要对从库做任何修改
      下方命令除了--basedir 和 --datadir可以根据具体情况修改,其他参数不需要修改
    /dbdata/mysql3306/bin/mysqld --initialize-insecure --lower_case_table_names=1 --user=mysql --basedir=/dbdata/mysql3306 --datadir=/dbdata/mysql3306/data 

    • 安装步骤4 【配置systemctl】
      使用systemctl start mysqld即可启动
      ExecStart和ExecStop中的路径要写清楚,改成你服务器上对应的路径。
    cat > /etc/systemd/system/mysqld.service << EOF
    [Unit]
    Description=MySQL Server
    Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
    After=network.target
    [Install]
    WantedBy=multi-user.target
    [Service]
    User=mysql
    Group=mysql
    ExecStart=/dbdata/mysql3306/bin/mysqld_safe --defaults-file=/dbdata/mysql3306/my.cnf
    ExecStop=/dbdata/mysql3306/bin/mysqladmin -P 3306 shutdown
    LimitNOFILE=65536
    EOF
    • 安装步骤5 【配置环境变量】
      路径同样要写清楚,改成你服务器上对应的路径
    echo "export PATH=/dbdata/mysql3306/bin:$PATH" > /etc/profile.d/mysql.sh
    source /etc/profile
    • 安装步骤6 【客户端连接配置】
      mysql -uroot命令,会去默认路径找socket文件连接数据库,如果我们自己指定了socket路径,需要人为在/etc/下添加my.cnf文件指明socket文件路径
    cat > /etc/my.cnf << EOF
    [mysql]
    socket=/dbdata/mysql3306/mysql.sock
    [client]
    socket=/dbdata/mysql3306/mysql.sock
    EOF
    • 安装步骤7 【启动MySQL】
      注意启动后,不要做任何操作!!!
    systemctl start mysqld

    第四步:备份主库

    在主库服务器操作

    请选择业务量小的时候进行备份,以免对业务造成影响,执行下方的备份语句对整个数据库进行备份

    mysqldump -u主库数据库用户名 -p对应密码 -S socket文件路径 --master-data=2 --single-transaction --all-databases --triggers --routines --events > 备份文件名.sql

    将数据库备份发给从库服务器

    scp 备份文件名.sql root@从库服务器:/tmp/

    第五步:从库导入数据

    在从库服务器操作

    如果数据库没有启动,请启动数据库,启动后不要做任何操作!!!

    systemctl start mysqld

    导入备份数据,此时从库还是非安全初始化后的状态,不需要输出密码也可以导入数据

    mysql -uroot < /tmp/备份文件名.sql

    导入完成后,保留当前会话窗口不要关闭,等待后续操作

    第六步:主库创建备份线程用户

    在主库服务器操作

    登录主库mysql

    mysql -uroot -p密码

    创建用户

    mysql > create user repl@'从库IP' identified with mysql_native_password by '对应的密码';
    mysql > grant replication slave on *.* to repl@'从库IP';
    mysql > flush privileges;

    第七步:从库开启复制

    在从库服务器操作

    登录从库mysql,因为是非安全初始化,可以免密登录mysql

    mysql -uroot

    配置主从连接信息

    mysql > CHANGE MASTER TO MASTER_HOST='主库IP',
    MASTER_USER='repl',MASTER_PASSWORD='复制用户对应的密码',
    MASTER_PORT=3306,
    MASTER_AUTO_POSITION=1;

    开启复制线程

    mysql > start slave;

    第八步:检查运行状况

    运行截图上的命令,对照框起来的相应ID,号码是否相同,是否出现两个yes





  • 相关阅读:
    bert源码的文件、参数理解
    除了利用打印的方法保存colab,如何直接转化为图片(附使用tf自己预训练模型导入办法)
    sse、mse、rmse、 r-square
    我的开源之旅(也许中道崩卒哈哈哈)
    attention_utils无法导入
    那些天,shell脚本中曾经踩过的坑
    python通过webservice接口实现配置下发
    python源文件转换成exe问题解决贴
    suds库使用说明官方文档
    两个实用linux小工具
  • 原文地址:https://www.cnblogs.com/dbsqler/p/024038a250610f5ca3242a31cb305146.html
Copyright © 2011-2022 走看看