功能描述
- 提供mysql数据和结构的备份恢复及升级功能
- 兼容 mysql 5.0+
- 无法处理'表'与'字段'的更名,会按删除旧名,添加新名处理
内置方法
-
of_base_tool_mysqlSync::init($config) 初始化成功返回true,否则false
configarray
config : 配置参数 { 'adjustSqlParam' : 作为callAdjustSql的第三个参数,默认null 'callAdjustSql' : 每从文件中提取一条sql,便调用此函数,默认null 'callDb' : 执行sql语句,执行成功返回二维数据(ASSOC方式查询:SELECT, SHOW)或true,失败返回false,is_callable格式, 符合回调格式 或 连接配置文件 { 'server' : mysql_connect 的 server 参数 'username' : mysql_connect 的 username 参数 'password' : mysql_connect 的 password 参数 'database' : 默认数据库,of_base_tool_mysqlSync:init时选填,与config['database']互补 'charset' : 默认字符集,of_base_tool_mysqlSync:init时选填,与config['charset']互补 } 'callMsg' : 当发生一些消息时会调用这个函数,默认null 'charset' : 指定字符集和对照,默认['utf8', 'utf8_general_ci'] 'database' : 指定数据库,默认尝试从数据库获取 'dbVersion' : 数据库版本'大版本号两位中版本号两位小版本号',会从数据库获取 'prefix' : 更新程序使用表的前缀,默认'__' 'sqlSplit' : sql语句分隔符,默认';' 'sqlMark' : sql标记,将关键位置加上特殊注释,方便callAdjustSql调用时定位, true=加标记,默认false { "/*`N:T'*\/" : 标志前面是表名,T 可以是['T'(TABLE), 'V'(VIEW), 'P'(PROCEDURE), 'F'(FUNCTION)]之一 } 'checkRole' : 检查角色所有权限, 数字(默认)=检查, false=不检查 'matches' : 备份不同匹配数据类型的更新项,默认全匹配 { 'table' : 表 null(默认)=全匹配,false=禁止备份,数组=按规则过滤{ 'include' : 一个包含的正则数组, 'exclude' : 一个排除的正则数组(优先级别高) }, 'view' : 视图 同上,默认=false 'procedure' : 过程 同上,默认=false 'function' : 函数 同上,默认=false } }
<?php //初始化配置 $temp = of_base_tool_mysqlSync::init(array( //SQL 执行方法 'callDb' => 'L::sql', //不校验权限 'checkRole' => false, //全库匹配 'matches' => array( //匹配表 'table' => null, //匹配视图 'view' => null, //匹配过程 'procedure' => null, //匹配函数 'function' => null, ) )); //初始化成功 if ($temp) { //备份为表语句 of_base_tool_mysqlSync::backupTable(ROOT_DIR . '/table.sql'); //删除就结构, 恢复表语句 of_base_tool_mysqlSync::revertTable(ROOT_DIR . '/table.sql'); }
-
of_base_tool_mysqlSync::sql($sql) 执行sql语句, 成功返回二维数据(ASSOC方式查询:SELECT, SHOW, EXPLAIN, DESCRIBE)或true,失败返回false
sqlstring一条sql语句
-
of_base_tool_mysqlSync::fetchFileSql($file = null) 从文件中提取一条sql语句
sqlstring, null字符串=打开一个新的文件流,成功返回true,失败false
null =依次提取下一条sql语句,失败或结束返回nullif( of_base_tool_mysqlSync::fetchFileSql(ROOT_DIR . '/structure.sql') === true ) { while( ($temp = of_base_tool_mysqlSync::fetchFileSql()) !== null ) { echo $temp, "<br>\n"; } echo '输出结束'; }
-
of_base_tool_mysqlSync::backupData($file, $config = array()) 备份表数据到指定文件
filestring指定备份全路径configarray备份配置{
type : 导出类型('INSERT', 'REPLACE':默认, 数组:修复模式{表名:[限制字段, ...], ..})之一,使用'INSERT'加入 DELETE FROM `xxx` 清空表
count : 扩展数量,默认200
}of_base_tool_mysqlSync::backupData(ROOT_DIR . '/demo.sql', array('type' => 'INSERT')); //恢复时完全替换 of_base_tool_mysqlSync::backupData(ROOT_DIR . '/demo.sql', array('type' => 'REPLACE')); //恢复时替换对于的ID数据 of_base_tool_mysqlSync::backupData(ROOT_DIR . '/demo.sql', array('type' => array( //修复模式,不在限制内的表按REPLACE处理 'tableName' => array('p_cde', 'c_cde') //限制表名 => 包含的值不存在时插入数据 ));
-
of_base_tool_mysqlSync::backupBase($file, $config = array()) 备份表结构到指定文件
filestring指定备份全路径configarray备份配置{
count : 扩展数量,默认200
}of_base_tool_mysqlSync::backupBase(ROOT_DIR . '/structure.sql');
-
of_base_tool_mysqlSync::backupTable($file) 备份表语句,成功返回true,失败返回false
filestring指定备份的文件全路径
of_base_tool_mysqlSync::backupTable(ROOT_DIR . '/table.sql');
-
of_base_tool_mysqlSync::revertData($file, $config = array()) 更新备份数据,成功返回true,失败返回false
filestring指定解析的文件全路径configarray导入配置{
disableTriggers : 禁用触发器,默认false不禁用
showProgress : 显示进度,默认true显示
}of_base_tool_mysqlSync::revertData(ROOT_DIR . '/demo.sql', array( //导入演示数据 'disableTriggers' => true, //关闭触发器 'showProgress' => true //显示进度 ));
-
of_base_tool_mysqlSync::revertBase($file, $config = array()) 更新备份结构,成功返回true,失败返回false
filestring指定解析的文件全路径configarray更新配置{
setInc : false(默认)=不操作增量, true=设置增量(AUTO_INCREMENT)
}of_base_tool_mysqlSync::revertBase(ROOT_DIR . '/structure.sql');
-
of_base_tool_mysqlSync::revertTable($file) 恢复表语句,成功返回true,失败返回false
filestring指定解析的文件全路径
//恢复SQL语句 该操作会删除对应表数据 of_base_tool_mysqlSync::revertTable(ROOT_DIR . '/table.sql');