一 MySQL字符集
字符集就是一套文字符号及其编码、比较规则的集合,第一个计算机字符集ASCII !MySQL数据库字符集包括字符集(CHARACTER)和校对规则(COLLATION)两个概念,其中字符集用来定义MySQL数据字符串的存储方式,而校对规则定义比较字符串的方式
MySQL怎样选择合适的字符集
1、如果处理各种各样的文字,发布到不同语言国家地区,应选Unicode字符集,对MySQL来说就是utf8(每个汉字三个字节)
2、如果只是需要支持中文,并且数据量很大,性能要求也高,可选GBK(定长,每个汉字占双字节,英文也占双字节),如果是大量运算,比较排序等,定长字符集更快,性能也高
3、处理移动互联网业务,可能需要使用utf8mb4字符集,apple
Mysql改默认字符集
修改配置文件 适用于数据库刚建立好
vim /etc/my.cnf
character-set-server=utf8 //在[MySQLd] 模块下面添加
重启服务,生效
二 MySQL日常维护
mysqlcheckàmysql修复工具
mysqlcheck客户端工具可以检查和修复MyISAM表,还可以优化和分析表。
实际上,它集成了mysql工具中check、repair、analyze、optimize的功能。
参数选项:
2.1 mysqlcheck –-help 查看帮助
-c, –check (检查表);
-r, –repair(修复表);
-a, –analyze (分析表);
-o, –optimize(优化表); //其中,默认选项是-c(检查表)
-u, 使用mysql中哪个用户进行操作
2.2 Mysqlcheck使用语法:
使用以下3种方式来调用mysqlcheck:
mysqlcheck[options] db_name [tables]
mysqlcheck[options] –database DB1 [DB2 DB3…]
mysqlcheck[options] –all–database
如果没有指定任何表或使用–database或–all–database选项,则检查整个数据库。
例:检查表(check)
mysqlcheck -uroot -p123456 -c book books
三 MySQL备份恢复
3.1 逻辑备份工具mysqldump
导出数据:
语法: mysqldump [OPTIONS] database [tables] >导出的文件名.sql
1:导出所有数据库mysqldump -uroot -p123456 -A >all.sql
mysqldump -uroot -p123456 --all-databases >all2.sql
//(mysql5.7不适用)
参数-A代表所有,等同于—all-databases
2:导出某个数据库
mysqldump -u 用户名 -p 数据库名 > 导出的文件名.sql# 注意是-p空格后是数据库名,不是密码
mysqldump -uroot -p123456 book >book.sql
3:导出单张表mysqldump -uroot -p123456 book books >books.sql
#导出book库books表
4:导出库的表结构mysqldump -uroot -p123456 -d book>booktable.sql
#只导出book库的表结构
5:只导出数据mysqldump -uroot -p123456 -t book>bookdata.sql
#只导出book库中的数据
6:导出数据库,并自动生成库的创建语句mysqldump -uroot -p123456 -B book2 >book2.sql
mysql -uroot -p123456 < book2.sql 导入不用指定数据名
导入数据:
1:导入所有数据库
mysql -uroot -p123456 <all.sql
2:导入数据库
Mysql -uroot -p123456 book <book.sql #如果导入时,没有对应的数据库,需要你手动创建一下:mysql> create database book;
使用source导入
mysql> create database book;
mysql> use book;
mysql> source /root/book.sql
3:导入表
mysql> drop table books;
mysql> source /root/books.sql; ##导入表时,不需要重新,创建表。要先进到相应的数据库中
mysql> select * from books;
4:导入表结构和数据
mysql> create database book;
mysql -uroot -p123456 book<booktable.sql
mysql -uroot -p123456 book<bookdata.sql //先结构后数据
3.2 xtrabackup备份工具
xtrbackup 安装
用rpm/yum安装方法和源码编译安装
方法一:yum安装
https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.7/binary/redhat/
下载地址:
https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.7/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.7-1.el7.x86_64.rpm
安装依赖
[root@xuegod63 ~]# rpm -Uvh https://www.percona.com/redir/downloads/percona-release/redhat/percona-release-0.1-3.noarch.rpm
[root@xuegod63 opt]# yum install mysql-community-libs-compat-5.7.20-1.el7.x86_64.rpm
[ 此RPM包下载地址: https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-community-libs-compat-5.7.21-1.el7.x86_64.rpm ]
[root@xuegod63 ~]# yum -y install perl perl-devel libaio libaio-devel perl-Time-HiRes perl-DBD-MySQL
[root@xuegod63 opt]# yum install percona-xtrabackup-24-2.4.7-1.el7.x86_64.rpm
注意:安装完成以后记得更改你的/etc/my.cnf配置文件制定数据目录,因为Xtrabackup是根据你的/etc/my.cnf配置文件来获取你备份的文件,比如在/etc/my.cnf的[mysqld] 下添加datadir=/usr/local/mysql/data,然后重启mysql(如果/etc/my.cnf中存在datadir=/usr/local/mysql/data则不用理会,直接进行下一步)
xtrbackup使用
innobackupex是perl脚本对xtrabackup的封装,和功能扩展。
权限和链接
xtrabackup需要连接到数据库和datadir操作权限。
xtrabackup或者innobackupex在使用过程中涉及到两类用户权限:
1.系统用户,用来调用innobackupex或者xtrabackup
2.数据库用户,数据库内使用的用户
innobackupex或者xtrabackup通过–user和–password连接到数据库服务
$ innobackupex –user=DBUSER –password=SECRET /path/to/backup/dir/
$ innobackupex –user=LUKE –password=US3TH3F0RC3 –stream=tar ./ | bzip2 - 压缩
$ xtrabackup –user=DVADER –password=14MY0URF4TH3R –backup –target-dir=/data/bkps/
全备和全备还原使用innobackupex创建全备
* 创建全备:
mkdir /tmp/db_backup
innobackupex –user=root –password=123456 /tmp/db_backup/
或者
innobackupex –user=root –password=123456 /tmp/db_backup/ >>/tmp/db_backup/db_backup.log
*使用innobackupex还原备份
使用innobackupex –copy-back来还原备份
service mysqld stop
rm -rf /var/lib/mysql/* //模拟删库
innobackupex –copy-back /tmp/db_backup/2015-11-10_13-23-10/#还原
*重新授权
chown -R mysql:mysql/var/lib/mysql/#要不然mysql启动不起来
service mysqld restart