-
用mysqldump来备份线上数据库
需求:备份全部表结构,备份部分表数据;
语句:bin/mysqldump -udbproxy -pdbproxy xlw>xlw.sql
复制xlw这个数据库到xlw.sql文件bin/mysql -udbproxy -pdbproxy test_xlw < xlw.sql
把xlw.sql文件还原到test_xlw数据库
以上是操作是颠覆式备份和复原,也就是说如果原来test_xlw数据库中的数据会被清空后,再导入xlw数据库。这是因为,生成的xlw.sql文件中,在导入xlw数据库的a表之前,默认DROP TABLE IF EXISTSa
; 可以通过–skip-add-drop-table取消drop语句bin/mysqldump -udbproxy -pdbproxy xlw --skip-add-drop-table a>xlw.sql
但是这个语句单纯的去掉了drop语句,在重建数据库时,如果a表已经存在,会报错导致失败。如果想增量的重建数据库,还要通过其他途径。bin/mysqldump -udbproxy -pdbproxy -d xlw >xlw.sql 只导出表结构,不导出数据。
bin/mysqldump -udbproxy -pdbproxy xlw a b c>xlwb.sql 把xlw数据库的a表,b表,c表导出数据到xlwb.sql
最后写了个脚本,定期备份。于是可以每次将备份数据放在指定文件夹中。
lastday=$(date -d last-day +%Y%m%d)
mkdir $lastday
echo $lastday
path="$PWD"
echo $path
bin/mysqldump -udbproxy -pdbproxy -d xlw >$path/$lastday/xlw.sql
bin/mysqldump -udbproxy -pdbproxy xlw a b c>$path/$lastday/xlw1.sql
有关mysqldump的参考链接http://www.cnblogs.com/qq78292959/p/3637135.html
https://jingyan.baidu.com/article/948f5924259516d80ef5f95e.html
2.mybatis部分
mybatis可以分为以下几个部分
a. xxMapper.xml文件,用标记语言来表示sql,每个标签的id对应xxMapper.java文件中的函数名。理论上,此xml文件要加入到mybatis的conf文件中
<mappers>
<!-- 注册orderMapper.xml文件,
xxxMapper.xml位于me.gacl.mapping这个包下,所以resource写成me/gacl/mapping/xxxMapper.xml-->
<mapper resource="me/gacl/mapping/xxxMapper.xml"/>
</mappers>
但是用了generator插件后,无需再conf文件中声明了。
b. dao层的XXMapper.Java,定义了一些对数据库的基本操作,比如增删改查。
c. pojo.entity层生成了XXEntity.java和XXEntityExample.java文件,XXEntity.java顾名思义是根据数据库的表结构创立的数据结构,包含了表的各个字段;mentor说XXEntityExample.java文件主要是和查询语句的where条件有关,比如order by,distinct等等。
综上,我的理解是,dao层的Mapper.java文件是最上层,收到由用户拼接的pojo层的两个文件后,传递给dao.mapper层的xml文件具体去数据库操作。
今天在操作时候遇到一个坑,要操作某个数据库,但是该数据库有一个字段叫做“public”,也就是说和java的保留字冲突,用jetty起程序的时候报错绑定失败。处理方式是在用来生成以上三个文件的xml文件中
<table schema="a" tableName="a" domainObjectName="aEntity"
enableCountByExample="true" enableUpdateByExample="true"
enableDeleteByExample="true" enableSelectByExample="true"
selectByExampleQueryId="true">
<generatedKey column="id" sqlStatement="JDBC"/>
<columnOverride column="public" property="ispublic" />
</table>
这样,将冲突的字段重命名,解决了问题。