基于已有数据的mysql搭建从库

前提说明:

     该步骤基于centos7.6 mysql基于5.7.22,不保证其他版本一定通用,如果主库已经有数据,需要先将主库备份,并且暂停主库的数据写入,避免从库和主库产生数据差异。

操作步骤:

   0.备份主库

#!/bin/bash

DATE=$(date +%F_%H-%M-%S)
BACKUP_DIR=/deploy/script/backup/mysql_backup
DB_LIST=$(mysql -p${mysqlPass} -s -e "show databases;" 2>/dev/null |egrep -v "Database|information_schema|mysql|performance_schema|sys")


for DB in $DB_LIST; do
    DBNAME=$(echo ${DB} | sed s'/\r//')
    BACKUP_DB_DIR=$BACKUP_DIR/${DBNAME}_${DATE}
    [ ! -d $BACKUP_DB_DIR ] && mkdir -p $BACKUP_DB_DIR &>/dev/null
    BACKUP_NAME=$BACKUP_DB_DIR/DB.sql
        if ! `mysqldump -p${mysqlPass} $DBNAME > $DBNAME".sql" 2>/dev/null`; then
            echo "$BACKUP_NAME 备份失败!"
        fi
done

   1. 基于5.7.22 的tar包安装mysql从库,安装完成后记得授权远程链接的权限,修改root的密码

#检查是否有旧数据库存在进行卸载
sudo rpm -qa|grep mariadb

sudo rpm -e --nodeps mariadb-libs-5.5.60-1.el7_5.x86_64

sudo rm /etc/my.cnf

#创建用户及目录
sudo groupadd mysql

sudo useradd -g mysql mysql

sudo passwd mysql

sudo chown -R mysql mysql

sudo chgrp -R mysql mysql

sudo mkdir data

sudo chown -R mysql:mysql data

/etc 下创建my.cnf,最好是将主库的配置复制过来,保证两边配置同步,然后只修改server_id即可
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8 
[mysqld]
skip-name-resolve
skip-grant-tables
#设置3306端口
port = 3306 
# 设置mysql的安装目录
basedir=/usr/local/mysql
# 设置mysql数据库的数据的存放目录
datadir=/usr/local/mysql/data
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB 
lower_case_table_names=1
max_allowed_packet=16M

#安装
bin/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/data/mysql/data/
sudo cp ./support-files/mysql.server /etc/init.d/mysqld
sudo chown 777 /etc/my.cnf
sudo chmod +x /etc/init.d/mysqld


#加入系统托管
sudo chkconfig --level 35 mysqld on
sudo chkconfig --list mysqld 
sudo chmod +x /etc/rc.d/init.d/mysqld
sudo chkconfig --add mysqld
sudo chkconfig --list mysqld
sudo service mysqld status

#设置环境变量
sudo vim /etc/profile
export PATH=$PATH:/usr/local/mysql/bin

2. 查看主库status,记录截图中的这这两个数据,如果主库未开启binlog需要将主库的binlog开启

show master status;

 3. 从库执行以下命令

#从库配置
master_host='172.19.69.129',   #主库ip
master_port=30306,             #主库对外映射的端口
master_user='root',            #主库用户,不推荐root,自己创建专用账户
master_password='cB1OHSvbogQ0oMXtZ5ObuPsg',   #主库用户密码
master_log_file='mysql-bin.000010',        #上述命令查到的数据值
master_log_pos=787070364;                  #上述命令查到的数据值
start slave;                          #配置好之后执行该命令开启同步

4. 验证

从库执行以下命令看到截图中的字段,证明开启同步成功,可以去主库插入数据进行测试

show slave status;

5.  将导出的主库数据导入从库

mysql -p${mysqlPass} -s -e "source /tmp/xxx.sql;"

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值