做网站起什么名字比较好,wordpress+4.4.1+漏洞,外贸公司会计账务处理,权威网站排名目录
1.环境准备
2.数据库的分库分表备份
2.1 分库备份
2.2 分表备份
2.3 分库分表备份 通过此次shell脚本实战案例#xff0c;我们将学习和了解到如何利用shell脚本实现数据库的分库分表备份。 1.环境准备 要实现数据库的备份#xff0c;首先我们应该要有数据库的环境我们将学习和了解到如何利用shell脚本实现数据库的分库分表备份。 1.环境准备 要实现数据库的备份首先我们应该要有数据库的环境以及需要备份的数据 在这里我们就使用rpm包的方式安装数据库 【1】先从官网下载rpm安装包上传至服务器
https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.14-1.el7.x86_64.rpm-bundle.tar
【2】解压 [rootlocalhost ~]# tar -xf mysql-5.7.14-1.el7.x86_64.rpm-bundle.tar
【3】安装
[rootlocalhost ~]# yum install -y mysql-community-server-5.7.14-1.el7.x86_64.rpm
# 由信息得知下面几个都得安装
[rootlocalhost ~]# yum install -y mysql-community-server-5.7.14-1.el7.x86_64.rpm mysql-community-libs-5.7.14-1.el7.x86_64.rpm mysql-community-client-5.7.14-1.el7.x86_64.rpm mysql-community-common-5.7.14-1.el7.x86_64.rpm
# 由于之前安装了别的数据库所以冲突了需要卸载下面这个
[rootlocalhost ~]# yum remove mariadb-libs
# 重新安装上面的
【4】启动
[rootnode11 ~]# systemctl enable --now mysqld
【5】查看
[rootnode11 ~]# ps -ef | grep mysqld
[rootnode11 ~]# netstat -lnupt | grep 3306【6】进入数据库修改密码
[rootnode11 ~]# grep password /var/log/mysqld.log # 查看密码
[rootnode11 ~]# mysql -uroot -p # 登录数据库
Enter password:
mysql alter user rootlocalhost identified by MySQL123; # 修改密码
Query OK, 0 rows affected (0.00 sec)
mysql show variables like %char%; # 查看字符集
# 永久修改如下
mysql \q
Bye
[rootnode11 ~]# vim /etc/my.cnf
[mysqld]
character-set-server utf8
[rootnode11 ~]# systemctl restart mysqld # 重启数据库服务 【7】创建数据库创建表导入数据
[rootnode11 ~]# mysql -uroot -p 进入数据库
Enter password:
# 创建数据库db1和其中的两张表
mysql create database db1;
mysql use db1;
create table dept (dept1 int ,dept_name varchar(11));
insert into dept values
(101,财务),
(102,销售),
(103,IT技术),
(104,行政);create table emp (sid int ,name varchar(11),age int,worktime_start date,incoming int,dept2 int);
insert into emp values
(1789,张三,35,1980/1/1,4000,101),
(1674,李四,32,1983/4/1,3500,101),
(1776,王五,24,1990/7/1,2000,101),
(1568,赵六,57,1970/10/11,7500,102),
(1564,荣七,64,1963/10/11,8500,102),
(1879,牛八,55,1971/10/20,7300,103);# 创建数据库db2和其中的两张表
mysql create database db2;
mysql use db2;
CREATE TABLE t_dept (id INT(11) NOT NULL AUTO_INCREMENT,deptName VARCHAR(30) DEFAULT NULL,address VARCHAR(40) DEFAULT NULL,PRIMARY KEY (id)
) ENGINEINNODB AUTO_INCREMENT1 DEFAULT CHARSETutf8;INSERT INTO t_dept(deptName,address) VALUES(华山,华山);
INSERT INTO t_dept(deptName,address) VALUES(丐帮,洛阳);
INSERT INTO t_dept(deptName,address) VALUES(峨眉,峨眉山);
INSERT INTO t_dept(deptName,address) VALUES(武当,武当山);
INSERT INTO t_dept(deptName,address) VALUES(明教,光明顶);
INSERT INTO t_dept(deptName,address) VALUES(少林,少林寺);CREATE TABLE t_emp (id INT(11) NOT NULL AUTO_INCREMENT,name VARCHAR(20) DEFAULT NULL,age INT(3) DEFAULT NULL,deptId INT(11) DEFAULT NULL,
empno int not null,PRIMARY KEY (id),KEY idx_dept_id (deptId)#CONSTRAINT fk_dept_id FOREIGN KEY (deptId) REFERENCES t_dept (id)
) ENGINEINNODB AUTO_INCREMENT1 DEFAULT CHARSETutf8;INSERT INTO t_emp(NAME,age,deptId,empno) VALUES(风清扬,90,1,100001);
INSERT INTO t_emp(NAME,age,deptId,empno) VALUES(岳不群,50,1,100002);
INSERT INTO t_emp(NAME,age,deptId,empno) VALUES(令狐冲,24,1,100003);
INSERT INTO t_emp(NAME,age,deptId,empno) VALUES(洪七公,70,2,100004);
INSERT INTO t_emp(NAME,age,deptId,empno) VALUES(乔峰,35,2,100005);
INSERT INTO t_emp(NAME,age,deptId,empno) VALUES(灭绝师太,70,3,100006);
INSERT INTO t_emp(NAME,age,deptId,empno) VALUES(周芷若,20,3,100007);
INSERT INTO t_emp(NAME,age,deptId,empno) VALUES(张三丰,100,4,100008);
INSERT INTO t_emp(NAME,age,deptId,empno) VALUES(张无忌,25,5,100009);
INSERT INTO t_emp(NAME,age,deptId,empno) VALUES(韦小宝,18,null,100010); 最后查看一下确保数据无误。 2.数据库的分库分表备份 此次实验我们利用自带的mysqldump工具实现数据库的分库分表备份 [rootnode11 ~]# mkdir -p /server/scripts # 脚本路径 [rootnode11 ~]# mkdir -p /backup/mysql # 数据库备份路径 2.1 分库备份
【1】首先我们获取数据库列表
[rootnode11 ~]# mysql --help | grep skip # -N选项跳过列名-N, --skip-column-names (Defaults to on; use --skip-reconnect to disable.)(Defaults to on; use --skip-ssl to disable.)[rootnode11 ~]# mysql -uroot -pMySQL123 -N -e show databases | egrep -v information_schema|mysql|performance_schema|sys
【2】然后我们实现循环遍历数据库
[rootnode11 scripts]# vim datab_1.sh
#!/bin/bashfor db in $DBS
doecho 备份$db
done
【3】其次备份数据库语句的实现
[rootnode11 scripts]# mysqldump -uroot -pMySQL123 -B db1 /backup/mysql/db1_$(date %F).sql
# 注意-B作用创建数据库和切换数据库不加-B时在恢复时必须手动创建数据库
[rootnode11 scripts]# ll /backup/mysql/
-rw-r--r-- 1 root root 2940 Oct 29 03:36 db1_2023-10-29.sql
【4】最后分库备份的参考代码 刚才备份的SQL语句全部删掉进行测试 上面的分步骤中数据库固定下面的脚本中要进行修改 [rootnode11 scripts]# vim datab_2.sh
#!/bin/bash# define var
OPT-uroot -pMySQL123
EX_DBinformation_schema|mysql|performance_schema|sys
DBS$(mysql ${OPT} -N -e show databases | egrep -v ${EX_DB})
BAK_DIR/backup/mysql[ -d $BAK_DIR ] || mkdir -p $BAK_DIR
# main program
for db in $DBS
domysqldump ${OPT} -B $db ${BAK_DIR}/${db}_$(date %F).sql
done
[rootnode11 scripts]# sh datab_2.sh # 执行脚本
-n检测语法是否有错误
-x跟踪脚本发现错误
2.2 分表备份
【1】首先我们获取数据库中表
[rootnode11 scripts]# mysql -uroot -pMySQL123 -N -e show tables from db1
【2】然后我们实现循环遍历数据库中的表
[rootnode11 scripts]# vim tab_1.sh
#!/bin/bashfor tab in $TABS
doecho 备份表$tab
done【3】其次备份数据库中的表的语句
[rootnode11 mysql]# mkdir db1
[rootnode11 scripts]# mysqldump -uroot -pMySQL123 db1 emp /backup/mysql/db1/db1_emp_$(date %F).sql
【4】最后分库备份的参考代码 刚才备份的SQL语句全部删掉进行测试 上面的分步骤中数据库固定下面的脚本中要进行修改 [rootnode11 scripts]# vim tab_2.sh
#!/bin/bash# define var
OPT-uroot -pMySQL123
DBSdb1
TABS$(mysql ${OPT} -N -e show tables from ${DBS})
BAK_DIR/backup/mysql/db1[ -d $BAK_DIR ] || mkdir -p $BAK_DIR
# main program
for tab in $TABS
domysqldump ${OPT} $DBS $tab ${BAK_DIR}/${DBS}_${tab}_$(date %F).sql
done
[rootnode11 scripts]# sh tab_2.sh
2.3 分库分表备份
[rootnode11 scripts]# vim all.sh
#!/bin/bash# define var
OPT-uroot -pMySQL123
EX_DBinformation_schema|mysql|performance_schema|sys
BAK_DIR/backup/mysqlDBS$(mysql ${OPT} -N -e show databases | egrep -v ${EX_DB})# main program
for db in $DBS
do[ -d ${BAK_DIR}/$db ] || mkdir -p ${BAK_DIR}/$dbmysqldump ${OPT} -B $db ${BAK_DIR}/${db}/${db}_$(date %F).sqlTABS$(mysql ${OPT} -N -e show tables from $db)for tab in $TABSdomysqldump ${OPT} $db $tab ${BAK_DIR}/${db}/${db}_${tab}_$(date %F).sqldone
done
后续可以结合计划任务进行数据库的备份。