mysql-v5.7
命令
yum list installed |grep mariadb
yum remove -y mariadb*
设置时区***重要
SELECT TIMEDIFF(NOW(), UTC_TIMESTAMP);
set global time_zone = '+8:00';
set time_zone = '+8:00';
flush privileges;
配置
[mysqld]
port=10106
log-bin=resp_mysql
server-id=1
binlog-do-db=sjzx-cloud
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
character_set_server=utf8
init_connect='SET NAMES utf8'
lower_case_table_names=1
max_allowed_packet=20M
说明
主要为第一个错误。导入数据包大于系统设置的 max_allowed_packet 大小。
还原的实例版本为 :mysql 5.7.13-log
默认 max_allowed_packet 大小为:4M
在 mysql 中,1个 sql 语句发送到 MySQL 服务器,1行数据发送到客户端,或者二进制日志从 master 发送到 slave ,这些都作为一个包,(mysql 5.7 最大包为 1GB)。而我的备份脚本中,有的表字段类型为 longtext,其插入的值比较长,才导致了错误。
解决方法:
4M 既然不够,那就设置 20 MB 吧。
查看当前 max_allowed_packet 大小:
show variables like 'max_allowed_packet';
show variables where Variable_name = 'max_allowed_packet';
在命令行设置全局变量,新的连接立即生效:(windows 中写字节大小)
set global max_allowed_packet = 20*1024*1024;
同时在配置文件中添加以下参数:
max_allowed_packet = 20M
备份还原
mysqldump -uroot -psjzx@152 sjzx-cloud > sjzx_cloud_dump.SQL
-e 使用包括几个VALUES列表的多行INSERT语法;
--max_allowed_packet=XXX 客户端/服务器之间通信的缓存区的最大大小;
--net_buffer_length=XXX TCP/IP和套接字通信缓冲区大小,创建长度达net_buffer_length的行
注意:max_allowed_packet和net_buffer_length不能比目标数据库的配置数值大,否则可能出错。
首先确定目标库的参数值
mysql>show variables like 'max_allowed_packet';//67108864
mysql>show variables like 'net_buffer_length';//16384
使用mysqldump导出,默认导出的语句是批量插入语句。
使用mysqlpump导出,默认批量插入的条数是250条,可使用--extended-insert=10000指定批量插入时的数据。
mysqldump 的 --extended-insert 表示长INSERT,多row在一起批量INSERT,提高导入效率,和没有开启 -e 的备份导入耗时至少相差3、4倍,默认开启;用--extended-insert=false关闭。强烈建议开启,
mysqldump -uroot -p 数据库名 -e --max_allowed_packet=1048576 --net_buffer_length=16384 > SQL文件
mysqldump -uroot -psjzx@152 sjzx-cloud -e --max_allowed_packet=1048576 --net_buffer_length=16384 > sjzx_cloud_dump.sql
mysql -uroot -psjzx@152 new_sjzx_cloud < sjzx_cloud_dump.SQL
脚本
mysqldump -uroot -psjzx@231 sjzx_cloud -e --max_allowed_packet=1048576 --net_buffer_length=16384 |gzip > /data/zhfxx/jar/mysqlbackup/sjzx_cloud_dump`date +%Y-%m-%d_%H%M%S`.sql.gz;
mysqldump -uroot -psjzx@231 sjzx_cloud_dc -e --max_allowed_packet=1048576 --net_buffer_length=16384 |gzip > /data/zhfxx/jar/mysqlbackup/sjzx_cloud_dc_dump`date +%Y-%m-%d_%H%M%S`.sql.gz;
find /data/zhfxx/jar/mysqlbackup -type f -mtime +10 -name "*.sql.gz*" -exec rm -rf {} \;