数据库操作
连接本地数据库
1 | ksql -U system test -p 54321 |
创建数据库时,主要是定义数据库的基本属性,如数据库名称、字符集、排序规则等,并不会直接指定模式。
模式是数据库内部用于组织对象的逻辑结构,在创建数据库时,会默认创建一个 public
模式。
1 | CREATE DATABASE bi_data_test WITH ENCODING = 'UTF8'; |
查看库
1 | \l |
选择库
1 | \c bi_data_test |
选择库后可以查看模式和表
查看模式
1 | \dn |
查看表
1 | # 查看所有的表 |
删除库
1 | DROP DATABASE db01; |
退出
1 | \q |
本地导出导入
查找导出程序
1 | find / -name "sys_dump" |
查找到的
/home/kingbase/ES/V9/KESRealPro/V009R003C011/Server/bin/sys_dump
/home/kingbase/ES/V9/KESRealPro/V009R003C011/ClientTools/bin/sys_dump
添加软链
1 | ln -s /home/kingbase/ES/V9/KESRealPro/V009R003C011/Server/bin/sys_dump /usr/bin/sys_dump |
导出SQL
1 | sys_dump -U system -d abi -F p -f /data/dbbackup/abi_bak.sql |
导出设置密码
1 | export KRAP_PGPASSWORD="your_password" |
导入 SQL
连接
1 | ksql -U system test |
创建数据库
1 | CREATE DATABASE xhkjedu_school_2 ENCODING 'UTF8' TEMPLATE template0; |
退出 ksql
创建数据库完成后,使用 \l
命令查看数据库列表,可使用 \q
命令退出 ksql
交互界面。
导入
如果之前使用 sys_dump
导出的是 SQL 脚本,可以使用 psql
工具将其导入到目标数据库中。
1 | ksql -U system -d abi2 -f /data/dbbackup/abi_bak.sql |
-U username
:指定数据库的用户名。-d dbname
:指定要导入数据的数据库名称。-f /path/to/output.sql
:指定要导入的 SQL 脚本文件的路径。
压缩与解压
我这使用归档方式导入总是失败,而SQL方式是没问题的。
所以可以采用SQL+压缩的方式,也能节省一半的空间。
压缩
1 | tar -czvf xhkjedu_school.sql.tar.gz xhkjedu_school.sql |
解压
1 | tar -xzvf xhkjedu_school.sql.tar.gz |
编写脚本及定时任务
在linux中,通常使用BASH脚本对需要执行的内容进行编写,加上定时执行命令crontab实现日志自动化生成。
以下代码功能就是针对mysql进行备份,配合crontab,实现备份的内容为7天内的每天的mysql数据库记录。
创建文件夹
1 | mkdir -p /data/cron/ |
单个数据库备份
这种方式适合不同的数据库在不同的时间备份
创建文件
1 | /data/cron/kingbase_dump_script.sh |
内容如下
1 |
|
使脚本可运行
1 | chmod +x /data/cron/kingbase_dump_script.sh |
如上代码主要含义如下:
- 首先设置各项参数,例如number最多需要备份的数目,备份路径,用户名,密码等。
- 执行mysqldump命令保存备份文件,并将操作打印至同目录下的log.txt中标记操作日志。
- 定义需要删除的文件:通过ls命令获取第九列,即文件名列,再通过
head -1
实现定义操作时间最晚的那个需要删除的文件。 - 定义备份数量:通过ls命令加上
wc -l
统计以sql结尾的文件的行数。 - 如果文件数超出限制数量,就删除最早创建的sql文件。
多个数据库备份
这种适合在某个时间开始逐个备份多个数据库。
1 | vi /data/cron/kingbase_dump_script.sh |
内容如下:
1 |
|
使脚本可运行
1 | chmod +x /data/cron/kingbase_dump_script.sh |
备份测试
1 | /data/cron/kingbase_dump_script.sh |
执行定时任务
在LINUX中,周期执行的任务一般由cron这个守护进程来处理[ps -ef|grep cron
]。
cron读取一个或多个配置文件,这些配置文件中包含了命令行及其调用时间。
cron的配置文件称为crontab
,是cron table
的简写。
创建定时任务脚本文件
1 | vi /data/cron/kingbase_backup.cron |
定期执行编写的定时任务脚本(记得先给shell脚本执行权限)
每天凌晨2点执行
1 | 00 02 * * * /data/cron/kingbase_dump_script.sh |
注意:这操作是直接
替换
该用户下的crontab,而不是新增
添加一行后一定要换行
随后使用crontab命令添加定时脚本
1 | crontab /data/cron/kingbase_backup.cron |
再通过命令检查定时任务是否已创建:
1 | crontab -l |