|
|
|
@ -1,167 +1,237 @@
|
|
|
|
|
## 云数据库 RDS
|
|
|
|
|
## 云数据库 $RDS$
|
|
|
|
|
|
|
|
|
|
4.07GB
|
|
|
|
|
5.7
|
|
|
|
|
hins25487844_data_20240730052418_qp.xb
|
|
|
|
|
还原办法:
|
|
|
|
|
https://www.alibabacloud.com/help/zh/rds/apsaradb-rds-for-mysql/restore-the-data-of-an-apsaradb-rds-for-mysql-instance-from-a-physical-backup-file-to-a-self-managed-mysql-database
|
|
|
|
|
|
|
|
|
|
### 开始还原
|
|
|
|
|
cd /usr/local
|
|
|
|
|
|
|
|
|
|
因为备份文件太大,无法使用rz -be,所以选择sftp上传 hins25487844_data_20240730052418_qp.xb
|
|
|
|
|
> $RDS$为$5.7$版本,有自动备份设置,每天都会有一个新的备份生成。这个备份是物理备份。
|
|
|
|
|
|
|
|
|
|
#### 解包
|
|
|
|
|
下载的文件名称类似于:
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
mkdir /var/mysql_bkdata/ -p
|
|
|
|
|
cat hins25487844_data_20240730052418_qp.xb | xbstream -x -v -C /var/mysql_bkdata/
|
|
|
|
|
innobackupex --decompress --remove-original /var/mysql_bkdata/
|
|
|
|
|
hins25487844_data_20240730052418_qp.xb
|
|
|
|
|
hins25487844_data_20240813052415_qp.xb
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
> **[阿里云官方参考文档](https://www.alibabacloud.com/help/zh/rds/apsaradb-rds-for-mysql/restore-the-data-of-an-apsaradb-rds-for-mysql-instance-from-a-physical-backup-file-to-a-self-managed-mysql-database)**
|
|
|
|
|
|
|
|
|
|
#### 恢复前准备
|
|
|
|
|
```
|
|
|
|
|
innobackupex --defaults-file=/var/mysql_bkdata/backup-my.cnf --apply-log /var/mysql_bkdata/
|
|
|
|
|
```
|
|
|
|
|
#### 安装$Percona$ $XtraBackup$ 和 $qpress$
|
|
|
|
|
|
|
|
|
|
#### 编辑数据库配置文件
|
|
|
|
|
在自建库所在服务器中安装`Percona XtraBackup`和`qpress`后,再执行以下解压命令。若不安装,后续执行如下命令将失败。
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
mkdir /var/mysql_newdata -p
|
|
|
|
|
> **[参考文档](https://www.jianshu.com/p/3af4c7cf70f7)**
|
|
|
|
|
|
|
|
|
|
vi /etc/my.cnf
|
|
|
|
|
```shell
|
|
|
|
|
yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm
|
|
|
|
|
percona-release enable-only tools release
|
|
|
|
|
yum install lz4 zstd -y
|
|
|
|
|
yum install percona-xtrabackup-80 -y
|
|
|
|
|
yum -y install qpress
|
|
|
|
|
|
|
|
|
|
# 修改
|
|
|
|
|
|
|
|
|
|
datadir = /var/mysql_newdata
|
|
|
|
|
# 检查安装的版本
|
|
|
|
|
xtrabackup --version
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
**参数innodb_undo_tablespaces的取值需要与/var/mysql_bkdata/backup-my.cnf中的取值相同,您可以使用下面的命令来查询。**
|
|
|
|
|
#### 冷知识:为什么不使用$MysqlDump$备份数据库,而是采用了$XtraBackup$进行备份数据库?
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
cat /var/mysql_bkdata/backup-my.cnf | grep innodb_undo_tablespaces
|
|
|
|
|
```
|
|
|
|
|
**答**:因为逻辑备份时,会导致锁表,数据库性能下降,如果此时有大量用户使用,就带来的非常不好的体验,这时,$XtraBackup$的无感备份机制就有了用武之地。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### 添加
|
|
|
|
|
>这个值不是乱写的,是根据上面的查询命令获取到的
|
|
|
|
|
#### 上传备份文件到主机
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
[mysqld]
|
|
|
|
|
innodb_undo_tablespaces=0
|
|
|
|
|
innodb_undo_directory= /var/mysql_newdata
|
|
|
|
|
cd /usr/local
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### 恢复数据
|
|
|
|
|
因为备份文件太大,无法使用$rz$ $-be$,所以选择$sftp$上传
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
innobackupex --defaults-file=/etc/my.cnf --copy-back /var/mysql_bkdata/
|
|
|
|
|
hins25487844_data_20240813052415_qp.xb
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
#### 修改
|
|
|
|
|
```
|
|
|
|
|
vi /etc/my.cnf
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
#### 增加
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
[mysqld]
|
|
|
|
|
lower_case_table_names=1
|
|
|
|
|
```
|
|
|
|
|
#### 前提条件
|
|
|
|
|
|
|
|
|
|
#### 授权
|
|
|
|
|
```
|
|
|
|
|
chown -R mysql:mysql /var/mysql_newdata
|
|
|
|
|
```
|
|
|
|
|
要执行恢复备份,必须满足以下条件:
|
|
|
|
|
|
|
|
|
|
- 备份集要完成**准备**。
|
|
|
|
|
|
|
|
|
|
- 数据目录**$datadir$必须为空**。
|
|
|
|
|
|
|
|
|
|
#### 启动
|
|
|
|
|
- 不能恢复到正在运行的$mysqld$实例的数据目录(除非导入部分备份),在执行恢复之前需要**关闭$MySQL$服务器**。
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
mysqld --defaults-file=/etc/my.cnf --user=mysql --datadir=/var/mysql_newdata &
|
|
|
|
|
```
|
|
|
|
|
#### 还原
|
|
|
|
|
|
|
|
|
|
```shell
|
|
|
|
|
rm -rf /var/mysql_bkdata/ && mkdir /var/mysql_bkdata/ -p
|
|
|
|
|
|
|
|
|
|
# 解压
|
|
|
|
|
cat hins25487844_data_20240813052415_qp.xb | xbstream -x -v -C /var/mysql_bkdata/
|
|
|
|
|
|
|
|
|
|
------------------------------------------------------------------------------------------------------------
|
|
|
|
|
innobackupex --decompress --remove-original /var/mysql_bkdata/
|
|
|
|
|
|
|
|
|
|
#### 重置密码
|
|
|
|
|
# 应用日志
|
|
|
|
|
innobackupex --defaults-file=/var/mysql_bkdata/backup-my.cnf --apply-log /var/mysql_bkdata/
|
|
|
|
|
|
|
|
|
|
# 修改数据库文件属性
|
|
|
|
|
chown -R mysql:mysql /var/mysql_bkdata
|
|
|
|
|
```
|
|
|
|
|
/etc/init.d/mysqld stop
|
|
|
|
|
|
|
|
|
|
mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
|
|
|
|
|
mysql
|
|
|
|
|
update mysql.user set authentication_string=PASSWORD("DsideaL147258369") where user='root' and host='localhost';
|
|
|
|
|
#### 编辑数据库配置文件
|
|
|
|
|
|
|
|
|
|
```shell
|
|
|
|
|
vi /etc/my.cnf
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
**内容如下:**
|
|
|
|
|
|
|
|
|
|
```shell
|
|
|
|
|
[mysqld]
|
|
|
|
|
user=mysql
|
|
|
|
|
basedir=/usr/local/mysql
|
|
|
|
|
#datadir=/data/mysql
|
|
|
|
|
datadir=/var/mysql_bkdata
|
|
|
|
|
server_id=1
|
|
|
|
|
port=22066
|
|
|
|
|
socket=/tmp/mysql.sock
|
|
|
|
|
|
|
|
|
|
lower_case_table_names=1
|
|
|
|
|
max_connections = 2048
|
|
|
|
|
max_connect_errors = 30
|
|
|
|
|
table_open_cache = 2048
|
|
|
|
|
open_files_limit = 16384
|
|
|
|
|
max_allowed_packet = 16M
|
|
|
|
|
read_buffer_size = 8M
|
|
|
|
|
read_rnd_buffer_size = 32M
|
|
|
|
|
sort_buffer_size = 2M
|
|
|
|
|
join_buffer_size = 2M
|
|
|
|
|
thread_cache_size = 16
|
|
|
|
|
query_cache_size = 128M
|
|
|
|
|
query_cache_limit = 4M
|
|
|
|
|
slow_query_log = 1
|
|
|
|
|
long_query_time = 2
|
|
|
|
|
innodb_file_per_table = 1
|
|
|
|
|
max_allowed_packet = 64M
|
|
|
|
|
|
|
|
|
|
flush privileges;
|
|
|
|
|
innodb_data_file_path = ibdata1:10M:autoextend
|
|
|
|
|
innodb_buffer_pool_size = 2G
|
|
|
|
|
innodb_write_io_threads = 8
|
|
|
|
|
innodb_read_io_threads = 8
|
|
|
|
|
innodb_flush_log_at_trx_commit = 2
|
|
|
|
|
innodb_log_buffer_size = 16M
|
|
|
|
|
innodb_log_file_size = 170M
|
|
|
|
|
innodb_lock_wait_timeout = 60
|
|
|
|
|
|
|
|
|
|
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'IDENTIFIED BY 'DsideaL147258369' WITH GRANT OPTION;
|
|
|
|
|
#sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
|
|
|
|
|
|
|
|
|
|
flush privileges;
|
|
|
|
|
exit
|
|
|
|
|
sql-mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
|
|
|
|
|
|
|
|
|
|
/etc/init.d/mysqld restart
|
|
|
|
|
mysql -uroot -pDsideaL147258369
|
|
|
|
|
[mysql]
|
|
|
|
|
socket=/tmp/mysql.sock
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
> Mysql5.7修改用户密码,报错“Unknown trigger has an error in its body: ‘Unknown system variable ‘maintain_user”
|
|
|
|
|
#### 启动$Mysql$
|
|
|
|
|
|
|
|
|
|
> https://www.cnblogs.com/perfectCats/p/17979389
|
|
|
|
|
```shell
|
|
|
|
|
/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --user=mysql --datadir=/var/mysql_bkdata/&
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
#### 进入$Mysql$
|
|
|
|
|
|
|
|
|
|
```shell
|
|
|
|
|
/etc/init.d/mysqld stop
|
|
|
|
|
|
|
|
|
|
mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
|
|
|
|
|
mysql
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
**删除多余的触发器**
|
|
|
|
|
|
|
|
|
|
```sql
|
|
|
|
|
mysql> select trigger_schema,trigger_name from information_schema.triggers;
|
|
|
|
|
+----------------+----------------------------+
|
|
|
|
|
| trigger_schema | trigger_name |
|
|
|
|
|
| trigger_schema | trigger_name |
|
|
|
|
|
+----------------+----------------------------+
|
|
|
|
|
| sys | sys_config_insert_set_user |
|
|
|
|
|
| sys | sys_config_update_set_user |
|
|
|
|
|
| sys | sys_config_insert_set_user |
|
|
|
|
|
| sys | sys_config_update_set_user |
|
|
|
|
|
+----------------+----------------------------+
|
|
|
|
|
2 rows in set (0.03 sec)
|
|
|
|
|
mysql> drop trigger sys.sys_config_insert_set_user;
|
|
|
|
|
Query OK, 0 rows affected (0.06 sec)
|
|
|
|
|
2 rows in set (0.02 sec)
|
|
|
|
|
|
|
|
|
|
mysql> drop trigger sys.sys_config_update_set_user;
|
|
|
|
|
Query OK, 0 rows affected (0.02 sec)
|
|
|
|
|
|
|
|
|
|
[root@RockyLinux local]# mv /var/mysql_newdata/mysql/user.TRG /var/mysql_newdata/mysql/user.TRG.back
|
|
|
|
|
[root@RockyLinux local]# mv /var/mysql_newdata/mysql/proxies_priv.TRG /var/mysql_newdata/mysql/proxies_priv.TRG.back
|
|
|
|
|
```
|
|
|
|
|
有两个没有删除掉的触发器,会导致后面的修改密码失败,
|
|
|
|
|
|
|
|
|
|
找到自己数据恢复的目录,查找以“.trg”为结尾的触发器文件,这里数据恢复目录为/var/mysql_bkdata/,执行find查找口令:
|
|
|
|
|
|
|
|
|
|
find /var/mysql_bkdata/ -iname *.trg
|
|
|
|
|
|
|
|
|
|
rm -rf /var/mysql_bkdata/mysql/user.TRG
|
|
|
|
|
rm -rf /var/mysql_bkdata/mysql/proxies_priv.TRG
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
#### 授权与创建用户
|
|
|
|
|
|
|
|
|
|
>MySQL SQL报错-ERROR 1105 (HY000): Unknown error-存储过程/事件
|
|
|
|
|
```sql
|
|
|
|
|
退出Mysql,重新登录进来,切换到mysql.user表,重新更新密码
|
|
|
|
|
|
|
|
|
|
update mysql.user set authentication_string=PASSWORD("DsideaL147258369") where user='root' and host='localhost';
|
|
|
|
|
|
|
|
|
|
flush privileges;
|
|
|
|
|
|
|
|
|
|
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'IDENTIFIED BY 'DsideaL147258369' WITH GRANT OPTION;
|
|
|
|
|
|
|
|
|
|
flush privileges;
|
|
|
|
|
exit
|
|
|
|
|
|
|
|
|
|
/etc/init.d/mysqld restart
|
|
|
|
|
mysql -uroot -pDsideaL147258369
|
|
|
|
|
|
|
|
|
|
# 添加上项目中的ycharge用户
|
|
|
|
|
CREATE USER 'ycharge'@'localhost' IDENTIFIED BY 'ycharge';
|
|
|
|
|
GRANT ALL PRIVILEGES ON *.* TO 'ycharge'@'%'IDENTIFIED BY 'ycharge' WITH GRANT OPTION;
|
|
|
|
|
flush privileges;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 切换三张表的引擎为MyISAM,防止出现 1105 ER_UNKNOWN_ERROR
|
|
|
|
|
use mysql;
|
|
|
|
|
|
|
|
|
|
ALTER TABLE `mysql`.`proc` ENGINE = MyISAM;
|
|
|
|
|
ALTER TABLE `mysql`.`event` ENGINE = MyISAM;
|
|
|
|
|
ALTER TABLE `mysql`.`func` ENGINE = MyISAM;
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
> https://www.modb.pro/db/518258
|
|
|
|
|
#### 移动到$SSD$硬盘上
|
|
|
|
|
|
|
|
|
|
```Shell
|
|
|
|
|
df -h
|
|
|
|
|
```
|
|
|
|
|
# Mysql ERROR 1067: Invalid default value for 字段
|
|
|
|
|
|
|
|
|
|
https://blog.csdn.net/qq_26245325/article/details/78916363
|
|
|
|
|
```
|
|
|
|
|
[root@RockyLinux local]# df -h
|
|
|
|
|
Filesystem Size Used Avail Use% Mounted on
|
|
|
|
|
devtmpfs 4.0M 0 4.0M 0% /dev
|
|
|
|
|
tmpfs 7.7G 112K 7.7G 1% /dev/shm
|
|
|
|
|
tmpfs 3.1G 8.8M 3.1G 1% /run
|
|
|
|
|
/dev/mapper/rl-root 491G 80G 412G 17% /
|
|
|
|
|
/dev/sda2 960M 220M 741M 23% /boot
|
|
|
|
|
/dev/sda1 599M 7.1M 592M 2% /boot/efi
|
|
|
|
|
tmpfs 1.6G 0 1.6G 0% /run/user/0
|
|
|
|
|
/dev/sdb1 98G 28G 65G 31% /usr/local/db
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
use mysql;
|
|
|
|
|
```shell
|
|
|
|
|
cd /usr/local/db
|
|
|
|
|
rm -rf mysql_newdata
|
|
|
|
|
cp -r /var/mysql_bkdata/ mysql_bkdata/
|
|
|
|
|
|
|
|
|
|
ALTER TABLE `mysql`.`proc` ENGINE = MyISAM;
|
|
|
|
|
ALTER TABLE `mysql`.`event` ENGINE = MyISAM;
|
|
|
|
|
ALTER TABLE `mysql`.`func` ENGINE = MyISAM;
|
|
|
|
|
```
|
|
|
|
|
service mysqld stop
|
|
|
|
|
修改一下 /etc/my.cnf
|
|
|
|
|
|
|
|
|
|
data_dir=/usr/local/db/mysql_bkdata
|
|
|
|
|
|
|
|
|
|
# 修改数据库文件属性
|
|
|
|
|
chown -R mysql:mysql /usr/local/db/mysql_bkdata
|
|
|
|
|
|
|
|
|
|
#### MySQL错误-this is incompatible with sql_mode=only_full_group_by完美解决方案
|
|
|
|
|
service mysqld start
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
https://blog.csdn.net/weixin_43102784/article/details/136162801
|
|
|
|
|