蓝鲸数据库主从配置

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")
原文地址:https://www.cnblogs.com/jin-yuana/p/14043444.html