zoukankan      html  css  js  c++  java
  • 蓝鲸数据库主从配置

    1. 添加MySQL节点到install.conf文件中

    [bkce-basic]
    172.27.16.44 kafka(config),zk(config),es,consul,bkdata(databus),nginx,influxdb,paas,cmdb,job,gse,license,redis,appo
    172.27.16.38 kafka(config),zk(config),es,consul,bkdata(dataapi),mongodb,mysql,beanstalk,fta,rabbitmq
    172.27.16.88 kafka(config),zk(config),es,consul,bkdata(monitor),appt,mysql

     2. 利用bkcec安装mysql

    ./bkcec sync common
    ./bkcec sync mysql
    ./bkcec install mysql
    ./bkcec initdata mysql
    ./bkcec status mysql

    3. 修改数据库密码

    vim /etc/my.cnf
    skip-grant-tables # 加入到mysqld中
    cd /data/bkce/service/mysql/bin
    ./mysql.sh restart #重启数据库
    ./mysql -uroot -p -h 172.27.16.88
    mysql>  use mysql;
    mysql>  update mysql.user set authentication_string=PASSWORD('password') where user='root';
    flush privileges; # 重置root密码为password
    
    删除skip-grant-tables重启即可登录
    注意:需要检查/etc/my.cnf中是否开启bin-log,如下截图

    4. 备份主数据库并同步从数据库

    ./mysqldump -uroot -p -h 172.27.16.38 --set-gtid-purged=OFF --databases bk_bkdata_api bk_fta_solutions bk_log_search bk_monitor bk_nodeman 
    bk_sops bkdata_monitor_alert bksuite_common job jobLog open_paas  > /mysqldump.sql     #备份
    
    ./mysql -uroot -p -h 172.27.16.88 < /mysqldump.sql    #导入

    5. 创建用户并授予权限

    CREATE USER 'test'@'172.27.16.88' IDENTIFIED BY 'password'; 
    GRANT REPLICATION SLAVE ON *.* TO 'test'@'172.27.16.88';
    flush privileges;

    6. 主从配置

    主服务器操作:

    查看master状态,记录二进制文件名(mysql-bin.000010)和位置(1116748):

     从服务器操作:

    重启mysql,打开mysql会话,执行同步SQL语句(需要主服务器主机名,登陆凭据,二进制文件的名称和位置):

    CHANGE MASTER TO
    MASTER_HOST='172.27.16.38',
    MASTER_USER='test',
    MASTER_PASSWORD='password',
    MASTER_LOG_FILE='mysql-bin.000010',
    MASTER_LOG_POS=1116748;

    启动slave同步进程:

    mysql>start slave;
    mysql> show slave statusG;
    *************************** 1. row ***************************
                   Slave_IO_State: Waiting for master to send event
                      Master_Host: 172.27.16.38
                      Master_User: test
                      Master_Port: 3306
                    Connect_Retry: 60
                  Master_Log_File: mysql-bin.000010
              Read_Master_Log_Pos: 1881157
                   Relay_Log_File: VM-16-88-centos-relay-bin.000002
                    Relay_Log_Pos: 840574
            Relay_Master_Log_File: mysql-bin.000010
                 Slave_IO_Running: Yes
                Slave_SQL_Running: Yes

    JOB平台配置

    作业平台配置MySQL主从
    配置云参
    参数类型    参数名    默认值    是否常量
    字符    SLAVE_MYSQL_HOST    slave IP地址    Y
    字符    MASTER_MYSQL_HOST    master IP地址    Y
    字符    MASTER_POST_FILE    None    N
    字符    MASTER_POSITION    None    N
    字符    MYSQL_USER    root    N
    脚本名称
    bkcec_install_mysql.sh
    中控机执行
    #!/bin/bash
    ...  # 省略默认脚本内容
    cd /data/install/ &&
    grep $SLAVE_MYSQL_HOST install.config|grep mysql||sed -r -i "s/($SLAVE_MYSQL_HOST.*)/1,mysql/g" install.config
    grep 'skip_grant_tables' /data/src/service/support-files/templates/#etc#my.cnf.tpl || sed -i '/[mysqld]/askip_grant_tables
    pid-file= /data/bkce/public/mysql/mysq.pid' /data/src/service/support-files/templates/#etc#my.cnf.tpl
    
    job_success $(./bkcec install mysql 1)
    config_mysql_cnf.sh
    slave 机器执行
    #!/bin/bash
    ...
    # 修改server id
    sed -i -r 's/^(server-id.*=).*/1 2/g' /etc/my.cnf
    
    # 启动mysql
    job_success $(/data/bkce/service/mysql/bin/mysql.sh start)
    sync_data.sh
    中控机执行
    配置脚本参数,配置数据库密码
    #!/bin/bash
    ...
    echo "开始同步数据..."
    mysqldump -u$MYSQL_USER -p$1 -h $MASTER_MYSQL_HOST --all-databases --master-data=2 |mysql -uroot -h $SLAVE_MYSQL_HOST
    create_mysql_user.sh
    中控机执行
    配置脚本参数,配置数据库密码
    #!/bin/bash
    ...
    # 授权
    mysql -u$MYSQL_USER -p$1 -h $MASTER_MYSQL_HOST -e "grant replication slave on *.* to 'replica'@'$SLAVE_MYSQL_HOST' identified by '123456';"
    mysql -u$MYSQL_USER -p$1 -h $MASTER_MYSQL_HOST -e 'flush privileges;'
    
    # job_success $(echo '开始授权')
    MASTER_POST_FILE=$(mysql -u$MYSQL_USER -p$1 -h $MASTER_MYSQL_HOST -e 'show master statusG'|sed -n '2,3p'|awk '{print $2}'|sed -n '1p')
    MASTER_POSITION=$(mysql -u$MYSQL_USER -p$1 -h $MASTER_MYSQL_HOST -e 'show master statusG'|sed -n '2,3p'|awk '{print $2}'|sed -n '2p')
    config_slave.sh
    中控机执行
    #!/bin/bash
    ...
    mysql -h $SLAVE_MYSQL_HOST -e "change master to master_host='$MASTER_MYSQL_HOST',master_user='replica',master_password='123456',master_log_file='$MASTER_POST_FILE',master_log_pos=$MASTER_POSITION;"
    job_success $(mysql -h $SLAVE_MYSQL_HOST -e "start slave;" ; mysql -h $SLAVE_MYSQL_HOST -e "show slave statusG")
  • 相关阅读:
    Python os模块介绍
    (转) JAVA中如何设置图片(图标)自适应Jlable等组件的大小
    (转)统计学习-2 感知机知识准备(模型类型、超平面与梯度下降法)
    详细讲述MySQL中的子查询操作 (来自脚本之家)
    (转)详解数据库的自然连接
    MySQL 数据类型 详解
    MySql详解(四)
    MySql详解(五)
    MySql详解(七)
    MySql详解(一)
  • 原文地址:https://www.cnblogs.com/jin-yuana/p/14043444.html
Copyright © 2011-2022 走看看