大致思路:
1.通知开发停应用
2.停mysql库
3. 以read only方式打开数据库
4. 逻辑备份mysql数据库
5. 记录数据库当前的binlog位置
6. 新建目录/data/mysql_data
7. 拷贝数据库相关文件到mysql_data
8. 修改my.cnf中的mysql数据库文件路径
9. 以read only启动mysql数据库,查看binlog位置
10. 关闭mysql数据库
11. 将/data/mysql_data目录下的所有文件打包传输到备库的mysql数据库目录
12. 启动备库
13. 启动主库
14. 在备库设置主库的配置信息,启动slave
15. 过一天后删除/data目录下的mysql数据库文件
————————————————————————————

详细处理过程:
1.电话通知开发停应用

2.停mysql库
mysqladmin shutdown -uroot -p
3. 以read only方式打开数据库
mysqld_safe –defaults-file=/etc/my.cnf –read_only -uroot &

4. 逻辑备份mysql数据库
每个数据库单独备份,主要是考虑有两个数据库的干扰
准备好了脚本mysqldump_manual.sh ,在/home/mysql目录下
all_db=”$($MYSQL -u $db_user -h $db_host -p$db_passwd -Bse ‘show databases’)”
for db in $all_db
do
$MYSQLDUMP -u $db_user -h $db_host -p$db_passwd –skip-lock-tables –single-transaction $db | $GZIP -9 > “$backup_dir/mysqldump_lisx/$time.$db.gz”
done

5. 记录数据库当前的binlog位置

MariaDB [(none)]> SHOW MASTER STATUS;
+——————+———-+————–+——————+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+——————+———-+————–+——————+
| mysql-bin.000140 | 245 | | |
+——————+———-+————–+——————+
1 row in set (0.00 sec)

二进制日志值为mysql-bin.000140,偏移量为245

6. 新建目录/data/mysql_data
cd /data
mkdir mysql_data
chmod 755 mysql_data
chown mysql:mysql mysql_data

7. 拷贝数据库相关文件到mysql_data
先停止mysql数据库
mysqladmin shutdown -uroot -p

拷贝所有文件,binlog可以只拷贝当前的一个
cp aria_log.00000001 ./mysql_data/
cp aria_log_control ./mysql_data/
cp galera.cache ./mysql_data/
cp grastate.dat ./mysql_data/
cp ibdata1 ./mysql_data/
cp ibdata2 ./mysql_data/
cp ibdata3 ./mysql_data/
cp ibdata4 ./mysql_data/
cp ibdata5 ./mysql_data/
cp ibdata6 ./mysql_data/
cp ib_logfile0 ./mysql_data/
cp ib_logfile1 ./mysql_data/
cp Mariadb01.800best.com.err ./mysql_data/
cp Mariadb01-slow.log ./mysql_data/
cp mysql-bin.000140 ./mysql_data/
cp mysql-bin.index ./mysql_data/

cp -r performance_schema ./mysql_data/
cp -r mysql ./mysql_data/
cp -r test ./mysql_data/
cp -r dzbprod ./mysql_data/
cp -r wmsdata ./mysql_data/
cp -r wmsx ./mysql_data/
cp -r ng_wmsx ./mysql_data/
cp -r v5edi ./mysql_data/
cp -r emdb ./mysql_data/
cp -r dm_wmsx ./mysql_data/
cp -r qbprod ./mysql_data/
cp -r eeip ./mysql_data/
cp -r bestpm ./mysql_data/
8. 修改my.cnf中的mysql数据库文件路径
vi /etc/mysql/conf.d/my.cnf
修改mysqld下面的
datadir=/data 为 datadir=/data/mysql_data
还有几个路径相关的参数,也一起修改
9. 以read only启动mysql数据库,查看binlog位置
mysqld_safe –defaults-file=/etc/my.cnf –read_only -uroot &

MariaDB [(none)]> SHOW MASTER STATUS;
+——————+———-+————–+——————+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+——————+———-+————–+——————+
| mysql-bin.000142 | 245 | | |
+——————+———-+————–+——————+
1 row in set (0.00 sec)

二进制日志值为mysql-bin.000142,偏移量为245
10. 关闭mysql数据库
mysqladmin shutdown -uroot -p
11. 将/data/mysql_data目录下的所有文件打包传输到备库的mysql数据库目录
使用root用户大包
cd /data
tar cvfz mysql_new.tar.gz mysql_data/

scp mysql_new.tar.gz slave_ip:/u01/app/soft/test/

关闭slave数据库,准备解压

在147上解压缩
用root用户解压
tar -zxvf mysql_data.tar.gz
移动所有数据库目录到/var/lib/mysql目录下
移动后,注意mysql_data目录的权限
drwxr-xr-x 15 mysql mysql 4096 Oct 29 00:47 mysql

12. 启动备库
mysqld_safe –defaults-file=/etc/my.cnf -uroot &
13. 启动主库
mysqld_safe –defaults-file=/etc/my.cnf -uroot &
14. 在备库设置主库的配置信息,启动slave
–repl用户已经创建
GRANT REPLICATION SLAVE ON *.* TO ‘repl’@’%’ IDENTIFIED BY ‘slavepass’;

CHANGE MASTER TO
MASTER_HOST=’master_ip’,
MASTER_USER=’repl’,
MASTER_PASSWORD=’slavepass’,
MASTER_PORT=3306,
MASTER_LOG_FILE=’mysql-bin.000142′,
MASTER_LOG_POS=245,
MASTER_CONNECT_RETRY=10;

start slave;
show slave status \G
15. 过一天后删除/data目录下的mysql数据库文件
rm -rf /data/wmsdata