mysqldump 使用 及数据库升级

文章详细描述了如何使用mysqldump工具带条件导出数据,以及执行MySQL数据库从版本29到30的升级过程,包括备份、停用服务、安装新版本、恢复数据和建立主从同步的步骤。
摘要由CSDN通过智能技术生成

mysqldump 带条件导出数据

– 导出20220101年之前的数据 机构贷库(jigoudai)下的合同表(ods_contract_detail_v) 带表结构

mysqldump -uroot -p --socket=/home/app/mysql/3307/mysql.sock --single-transaction --master-data --where='period_id < 20220101' jigoudai ods_contract_detail_v > contract.sql

– 导出20220101年之前的数据 机构贷库(jigoudai)下的合同表(ods_contract_detail_v) 不带带表结构

mysqldump -uroot -p --socket=/home/app/mysql/3307/mysql.sock -t --single-transaction --master-data --where='period_id < 20220101' jigoudai ods_contract_detail_v > contract.sql

·
·
----------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------

使用以下命令来将MySQL数据库中的表结构和数据导出到一个文件中:

mysqldump -u username -p password database_name > export.sql

其中,username是您的MySQL用户名,password是您的MySQL密码,database_name是要导出的数据库名,export.sql是要生成的导出文件名。您可以根据需要修改这些参数。

如果您只想导出表结构而不包括数据,则可以使用以下命令:

mysqldump -u username -p password --no-data database_name > export.sql

这个命令在导出时会去掉表数据。

如果您只想导出特定表,您可以像这样使用命令:

mysqldump -u username -p password database_name table_name > export.sql

其中,table_name是要导出的表名。
·

Mysql升级(主从)

Mysql升级之前所有使用主备数据库的业务、日终任务、应用等将全部停止(Azkaban、nacos、微服务应用)

(Slave)从服务器
一、升级之前需做好备份(所有操作使用appuser用户)
1.1创建备份的文件夹

mkdir -p /home/app/mysql/v29_bak20230228

v29的数据库rpm包备份

cp 0.29mysql_rpm /home/app/mysql/v29_bak20230228

登录数据库

mysql --socket=/home/app/mysql/3307/mysql.sock -uroot -p
d6ywN<wLp:fV(密码)
1.2查看数据库
show databases;
1.3导出所有业务库表信息,(表创建、数据导入)
mysqldump -uroot -p --socket=/home/app/mysql/3307/mysql.sock --databases jigoudai jigoudai_test jigoudaidev ltest nacos azkaban209 > /home/app/mysql/3307/bus_data.sql
root123456(密码)
1.4导出用户及权限信息(数据导入)
mysqldump -uroot -p --socket=/home/app/mysql/3307/mysql.sock mysql user db tables_priv columns_priv > /home/app/mysql/3307/user_data.sql
1.5导出所有业务表的存储过程
mysqldump -uroot -p --socket=/home/app/mysql/3307/mysql.sock -ntd -R --databases jigoudai jigoudai_test jigoudaidev ltest nacos azkaban209 > /home/app/mysql/3307/fun_data.sql
1.6停止主从数据自动备份
stop slave
1.7数据库停用
ps -aux |grep mysql
kill -9

备份原数据文件

cp /home/app/mysql/3307/mysql3307.cnf /home/app/mysql/v29_bak20230228/
mv /home/app/mysql/3307 /home/app/mysql/3307_bak_20230228

二、升级包准备

创建安装包存放目录,并将安装包上传至"v30_rpm"文件夹下

mkdir -p /home/app/mysql/v30_rpm

创建mysql数据文件、配置文件等信息的目录

mkdir -p /home/app/mysql/3307
cp /home/app/mysql/v29_bak20230228/mysql3307.cnf /home/app/mysql/3307
#创建服务运行所需文件夹
mkdir -p /home/app/mysql/3307/log
mkdir -p /home/app/mysql/3307/mysqld
mkdir -p /home/app/mysql/3307/share
mkdir -p /home/app/mysql/3307/tmp
mkdir -p /home/app/mysql/3307/blog
mkdir -p /home/app/mysql/3307/plugin
mkdir -p /home/app/mysql/3307/data

三、安装过程
1.使用appuser解压Mysql_v8.0.30的安装包
tar -xvf mysql-8.0.30-1.el7.x86_64.rpm-bundle.tar

#检查安装的mysql版本 跟要装的是否一样或者是否安装
rpm -qa | grep -i mysql
rpm -qa | grep mariadb

卸载非30版本的mysql包

sudo rpm -ev mysql-community-client-plugins-8.0.29-1.el7.x86_64 --nodeps
sudo rpm -ev mysql-community-client-8.0.29-1.el7.x86_64 --nodeps
sudo rpm -ev mysql-community-common-8.0.29-1.el7.x86_64 --nodeps
sudo rpm -ev mysql-community-libs-8.0.29-1.el7.x86_64 --nodeps
sudo rpm -ev mysql-community-icu-data-files-8.0.29-1.el7.x86_64 --nodeps

whereis mysql

sudo rm -rf /usr/bin/mysql
sudo rm -rf /usr/lib64/mysql
sudo rm -rf /usr/local/bin/mysql
sudo rm -rf /usr/include/mysql
sudo rm -rf /mysql/app/mysql-8.0.29-linux-glibc2.12-x86_64/bin/mysql
sudo rm -rf /usr/share/man/man1/mysql.1.gz

按顺序安装安装包 如遇到其他问题可以尝试进行强制安装 --nodeps --force

sudo rpm -ivh mysql-community-common-8.0.30-1.el7.x86_64.rpm
sudo rpm -ivh mysql-community-client-plugins-8.0.30-1.el7.x86_64.rpm
sudo rpm -ivh mysql-community-libs-8.0.30-1.el7.x86_64.rpm
sudo rpm -ivh mysql-community-libs-compat-8.0.30-1.el7.x86_64.rpm
sudo rpm -ivh mysql-community-devel-8.0.30-1.el7.x86_64.rpm --nodeps --force
sudo rpm -ivh mysql-community-client-8.0.30-1.el7.x86_64.rpm
sudo rpm -ivh mysql-community-icu-data-files-8.0.30-1.el7.x86_64.rpm
sudo rpm -ivh mysql-community-server-8.0.30-1.el7.x86_64.rpm
sudo rpm -ivh mysql-community-debuginfo-8.0.30-1.el7.x86_64.rpm

查看mysql版本,如果安装过程使用sudo 则需要使用"sudo mysql --version"

mysql --version

要移除掉默认生成的 my.cnf ,否则自己的配置不生效

mv /etc/my.cnf /etc/my.cnf_bak
之后的所有操作必须使用普通用户
#使用原先conf文件进行初始划数据库
mysqld --defaults-file=/home/app/mysql/3307/mysql3307.cnf --initialize --user=appuser --datadir=/home/app/mysql/3307/data

启动Mysql

nohup mysqld --defaults-file=/home/app/mysql/3307/mysql3307.cnf --user=appuser >/dev/null &

查看mysql密码(取:后面的密码(两个:则密码带:号))

tail -n200 log/mysqld.log
rduo;tl=%7vI

登录

mysql --socket=/home/app/mysql/3307/mysql.sock -uroot -p
d6ywN<wLp:fV

恢复数据

USE mysql
source /home/app/mysql/3307/user_data.sql
source /home/app/mysql/3307/bus_data.sql
source /home/app/mysql/3307/fun_data.sql
(Master)主服务器
1.1创建备份的文件夹
mkdir -p /home/app/mysql/v29_bak20230228

v29的数据库rpm包备份

cp 0.29mysql_rpm /home/app/mysql/v29_bak20230228

登录数据库

mysql --socket=/home/app/mysql/3307/mysql.sock -uroot -p
d6ywN<wLp:fV(密码)
1.2查看数据库
show databases;
1.3导出所有业务库表信息,(表创建、数据导入)
mysqldump -uroot -p --socket=/home/app/mysql/3307/mysql.sock --databases jigoudai jigoudai_test jigoudaidev ltest nacos azkaban209 > /home/app/mysql/3307/bus_data.sql
root123456(密码)
1.4导出用户及权限信息(数据导入)
mysqldump -uroot -p --socket=/home/app/mysql/3307/mysql.sock mysql user db tables_priv columns_priv > /home/app/mysql/3307/user_data.sql
1.5导出所有业务表的存储过程
mysqldump -uroot -p --socket=/home/app/mysql/3307/mysql.sock -ntd -R --databases jigoudai jigoudai_test jigoudaidev ltest nacos azkaban209 > /home/app/mysql/3307/fun_data.sql
1.6停止主从数据自动备份
stop slave
1.7数据库停用
ps -aux |grep mysql
kill -9

备份原数据文件

cp /home/app/mysql/3307/mysql3307.cnf /home/app/mysql/v29_bak20230228/
mv /home/app/mysql/3307 /home/app/mysql/3307_bak_20230228

二、升级包准备

创建安装包存放目录,并将安装包上传至"v30_rpm"文件夹下

mkdir -p /home/app/mysql/v30_rpm

创建mysql数据文件、配置文件等信息的目录

mkdir -p /home/app/mysql/3307
cp /home/app/mysql/v29_bak20230228/mysql3307.cnf /home/app/mysql/3307
#创建服务运行所需文件夹
mkdir -p /home/app/mysql/3307/log
mkdir -p /home/app/mysql/3307/mysqld
mkdir -p /home/app/mysql/3307/share
mkdir -p /home/app/mysql/3307/tmp
mkdir -p /home/app/mysql/3307/blog
mkdir -p /home/app/mysql/3307/plugin
mkdir -p /home/app/mysql/3307/data

三、安装过程
1.使用appuser解压Mysql_v8.0.30的安装包
tar -xvf mysql-8.0.30-1.el7.x86_64.rpm-bundle.tar

#检查安装的mysql版本 跟要装的是否一样或者是否安装
rpm -qa | grep -i mysql
rpm -qa | grep mariadb

卸载非30版本的mysql包

sudo rpm -ev mysql-community-client-plugins-8.0.29-1.el7.x86_64 --nodeps
sudo rpm -ev mysql-community-client-8.0.29-1.el7.x86_64 --nodeps
sudo rpm -ev mysql-community-common-8.0.29-1.el7.x86_64 --nodeps
sudo rpm -ev mysql-community-libs-8.0.29-1.el7.x86_64 --nodeps
sudo rpm -ev mysql-community-icu-data-files-8.0.29-1.el7.x86_64 --nodeps

whereis mysql

sudo rm -rf /usr/bin/mysql
sudo rm -rf /usr/lib64/mysql
sudo rm -rf /usr/local/bin/mysql
sudo rm -rf /usr/include/mysql
sudo rm -rf /mysql/app/mysql-8.0.29-linux-glibc2.12-x86_64/bin/mysql
sudo rm -rf /usr/share/man/man1/mysql.1.gz

按顺序安装安装包 如遇到其他问题可以尝试进行强制安装 --nodeps --force

sudo rpm -ivh mysql-community-common-8.0.30-1.el7.x86_64.rpm
sudo rpm -ivh mysql-community-client-plugins-8.0.30-1.el7.x86_64.rpm
sudo rpm -ivh mysql-community-libs-8.0.30-1.el7.x86_64.rpm
sudo rpm -ivh mysql-community-libs-compat-8.0.30-1.el7.x86_64.rpm
sudo rpm -ivh mysql-community-devel-8.0.30-1.el7.x86_64.rpm --nodeps --force
sudo rpm -ivh mysql-community-client-8.0.30-1.el7.x86_64.rpm
sudo rpm -ivh mysql-community-icu-data-files-8.0.30-1.el7.x86_64.rpm
sudo rpm -ivh mysql-community-server-8.0.30-1.el7.x86_64.rpm
sudo rpm -ivh mysql-community-debuginfo-8.0.30-1.el7.x86_64.rpm

查看mysql版本,如果安装过程使用sudo 则需要使用"sudo mysql --version"

mysql --version

要移除掉默认生成的 my.cnf ,否则自己的配置不生效

mv /etc/my.cnf /etc/my.cnf_bak
之后的所有操作必须使用普通用户
#使用原先conf文件进行初始划数据库
mysqld --defaults-file=/home/app/mysql/3307/mysql3307.cnf --initialize --user=appuser --datadir=/home/app/mysql/3307/data

启动Mysql

nohup mysqld --defaults-file=/home/app/mysql/3307/mysql3307.cnf --user=appuser >/dev/null &

查看mysql密码(取:后面的密码(两个:则密码带:号))

tail -n200 log/mysqld.log
rduo;tl=%7vI

登录

mysql --socket=/home/app/mysql/3307/mysql.sock -uroot -p
d6ywN<wLp:fV

恢复数据

USE mysql
source /home/app/mysql/3307/user_data.sql
source /home/app/mysql/3307/bus_data.sql
source /home/app/mysql/3307/fun_data.sql
主从关系建立
#登录master
mysql --socket=/home/app/mysql/3306/mysql.sock --port=3306 -uroot -p
#创建同步用户并授予允许同步的权限
CREATE USER ‘master’@‘%’ IDENTIFIED WITH mysql_native_password BY ‘oCh2xixf ‘;
GRANT REPLICATION SLAVE ON . TO ‘master’@’%’;
FLUSH PRIVILEGES;
#查看master的状态
show master status
#记录file和position

#登录 slave
mysql --socket=/home/app/mysql/3306/mysql.sock --port=3306 -uroot -p
#同步master的状态
change master to master_host=‘MYSQL01’, master_port=3306, master_user=‘master’, master_password='oCh2xixf ', master_log_file=‘mysql-bin.000002’, master_log_pos=1790;
#开启同步
start slave;’
#查看从服务状态
show slave status\G;

若出现Slave_IO_Running:No则
stop slave
#登录master
flush logs;
show master status;
#登录slave
change master to master_host=‘172.16.11.58’, master_port=3306, master_user=‘master’, master_password='oCh2xixf ', master_log_file=‘mysql-bin.000002’, master_log_pos= 1790;

验证主从
#验证主从同步(主节点导入预警管理数据库)
create database jigoudai;
use jigoudai
source /home/app/mysql/sql/jigoudai20221207_03.sql
#验证从节点是否导入预警管理数据库
use jigoudai;
show tables;
select * from rws_auth_user;

失败回滚
Mysql30 版本失败后恢复至 29版本,操作如下
#停止Mysql,删除无效的文件
ps -aux |grep mysql
kill -9
rm –rf /home/app/mysql/3306
#检查安装的mysql版本 跟要装的是否一样或者是否安装
rpm -qa | grep -i mysql
rpm -qa | grep mariadb

卸载检测到的mysql包

sudo rpm -ev mysql-community-client-plugins-8.0.30-1.el7.x86_64 --nodeps
sudo rpm -ev mysql-community-client-8.0. 30-1.el7.x86_64 --nodeps
sudo rpm -ev mysql-community-common-8.0.30-1.el7.x86_64 --nodeps
sudo rpm -ev mysql-community-libs-8.0.30-1.el7.x86_64 --nodeps
sudo rpm -ev mysql-community-icu-data-files-8.0.30-1.el7.x86_64 --nodeps

whereis mysql

sudo rm -rf /usr/bin/mysql
sudo rm -rf /usr/lib64/mysql
sudo rm -rf /usr/local/bin/mysql
sudo rm -rf /usr/include/mysql
sudo rm -rf /mysql/app/mysql-8.0.29-linux-glibc2.12-x86_64/bin/mysql
sudo rm -rf /usr/share/man/man1/mysql.1.gz

按顺序安装安装包 如遇到其他问题可以尝试进行强制安装 --nodeps --force

rpm -ivh mysql-community-common-8.0.29-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-plugins-8.0.29-1.el7.x86_64.rpm
sudo rpm -ivh mysql-community-libs-8.0.29-1.el7.x86_64.rpm 若报错:则yum remove mysql-libs
rpm -ivh mysql-community-client-8.0.29-1.el7.x86_64.rpm
rpm -ivh mysql-community-icu-data-files-8.0.29-1.el7.x86_64.rpm
sudo rpm -ivh mysql-community-server-8.0.29-1.el7.x86_64.rpm

查看mysql版本,如果安装过程使用sudo 则需要使用"sudo mysql --version"

mysql --version

要移除掉默认生成的 my.cnf ,否则自己的配置不生效

mv /etc/my.cnf /etc/my.cnf_bak
之后的所有操作必须使用普通用户
#使用原先conf文件进行初始划数据库
mysqld --defaults-file=/home/app/mysql/3307/mysql3307.cnf --initialize --user=appuser --datadir=/home/app/mysql/3307/data

启动Mysql

nohup mysqld --defaults-file=/home/app/mysql/3307/mysql3307.cnf --user=appuser >/dev/null &

查看mysql密码(取:后面的密码(两个:则密码带:号))

tail -n200 log/mysqld.log
rduo;tl=%7vI

验证数据库初始无误后停止数据库

ps -aux |grep mysql
kill -9

删除mysql数据文件

rm –rf /home/app/mysql/3307/data

将已备份的29数据文件迁移至原始位置

mv /home/app/mysql/3307_bak_20230228/3307 /home/app/mysql/

启动Mysql

nohup mysqld --defaults-file=/home/app/mysql/3307/mysql3307.cnf --user=appuser >/dev/null &

查看mysql密码(取:后面的密码(两个:则密码带:号))

tail -n200 log/mysqld.log
rduo;tl=%7vI

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值