MySQL 5.5 卸载
使用depg -l
命令查看已经安装的MySQL
dpkg -l | grep mysql
ii libmysqlclient18:amd64 5.5.55-0ubuntu0.14.04.1 amd64 MySQL database client library
ii mysql-common 5.5.55-0ubuntu0.14.04.1 all MySQL database common files, e.g. /etc/mysql/my.cnf
ii python-mysqldb 1.2.3-2ubuntu1 amd64 Python interface to MySQL
使用apt卸载当前mysql
sudo apt-get remove mysql-common
sudo apt-get remove
清除残余数据
dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P
(正在读取数据库 ... 系统当前共安装有 267278 个文件和目录。)
正在卸载 libmysqlclient18:amd64 (5.5.55-0ubuntu0.14.04.1) ...
正在清除 libmysqlclient18:amd64 (5.5.55-0ubuntu0.14.04.1) 的配置文件 ...
正在卸载 mysql-common (5.5.55-0ubuntu0.14.04.1) ...
正在清除 mysql-common (5.5.55-0ubuntu0.14.04.1) 的配置文件 ...
MySQL 5.7.18 安装
MySQL 官网下载安装包
通过 wget 下载 mysql-server_5.7.18-1ubuntu14.04_amd64.deb-bundle.tar
解压压缩包 共11个deb包
tar -xvf mysql-server_5.7.18-1ubuntu14.04_amd64.deb-bundle.tar
mysql-community-client_5.7.18-1ubuntu14.04_amd64.deb
mysql-testsuite_5.7.18-1ubuntu14.04_amd64.deb
mysql-community-server_5.7.18-1ubuntu14.04_amd64.deb
libmysqlclient20_5.7.18-1ubuntu14.04_amd64.deb
mysql-community-test_5.7.18-1ubuntu14.04_amd64.deb
mysql-client_5.7.18-1ubuntu14.04_amd64.deb
mysql-server_5.7.18-1ubuntu14.04_amd64.deb
libmysqlclient-dev_5.7.18-1ubuntu14.04_amd64.deb
mysql-community-source_5.7.18-1ubuntu14.04_amd64.deb
libmysqld-dev_5.7.18-1ubuntu14.04_amd64.deb
mysql-common_5.7.18-1ubuntu14.04_amd64.deb
安装依赖环境
sudo apt-get install libaio1
用sudo dpkg -i [包名]
命令逐个安装
由于包之前有依赖关系 安装顺序如下
sudo dpkg -i mysql-common_5.7.18-1ubuntu14.04_amd64.deb
sudo dpkg -i libmysqlclient20_5.7.18-1ubuntu14.04_amd64.deb
sudo dpkg -i libmysqlclient-dev_5.7.18-1ubuntu14.04_amd64.deb
sudo dpkg -i libmysqld-dev_5.7.18-1ubuntu14.04_amd64.deb
sudo dpkg -i mysql-community-client_5.7.18-1ubuntu14.04_amd64.deb
sudo dpkg -i mysql-client_5.7.18-1ubuntu14.04_amd64.deb
sudo dpkg -i mysql-community-server_5.7.18-1ubuntu14.04_amd64.deb
sudo dpkg -i mysql-community-test_5.7.18-1ubuntu14.04_amd64.deb
sudo dpkg -i mysql-community-source_5.7.18-1ubuntu14.04_amd64.deb
sudo dpkg -i mysql-server_5.7.18-1ubuntu14.04_amd64.deb
sudo dpkg -i mysql-community-test_5.7.18-1ubuntu14.04_amd64.deb
安装依赖包并设置密码
sudo apt-get install libmecab2
登录查看有无异常
mysql -u root
mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 5.7.18 MySQL Community Server (GPL)
Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
至此 MySQL 5.7.18 安装完成
相关设置
修改密码
set password for root@localhost = password('YOUR PASSWORD');
flush privileges;
设置远程登录
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'YOUR PASSWORD' WITH GRANT OPTION;
flush privileges;
打开mysql配置文件
vim /etc/mysql/mysql.conf.d/mysqld.cnf
将bind-address = 127.0.0.1
注释
重启MySQL
service mysql restart
至此 MySQL 5.7.18 已经完成了修改密码与开放远程登录
安装Python使用环境
sudo apt-get install python-mysqldb
确认安装无误
python
Python 2.7.6 (default, Oct 26 2016, 20:30:19)
[GCC 4.8.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import MySQLdb
>>>
改用utf8编码
打开文件
sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
在文件的[mysqld]
下新增
character-set-server=utf8
增加这个设置
然后打开文件
sudo vi /etc/mysql/conf.d/mysql.cnf
同上在 [mysql]
增加
default-character-set=utf8
增加这个设置
最后重启数据库
service mysql restart
连接后使用
SHOW VARIABLES LIKE 'char%';
查看数据库编码是否修改正确
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.01 sec)
innoDB 性能调优
以下内容参考《MySQL 管理之道 性能调优、高可用与监控》 第一版 208页
生产环境下 72GB内存 的my.cnf配置
此次使用了一台64GB内存的服务器进行调优秀
innodb_buffer_pool_size
缓冲池对InnoDB的影响很大,一定要配置正确,因此要给这个值分配足够的内存。通常是可用内存的70%-80%。更确切地说,如果你的内存比数据集大那么一点,那么让这个值比数据库的大小大一点最好,当然你需要注意数据库大小的增长,并经常调整innodb缓冲池的大小,使二者大小保证一致。(More precisely, if you have RAM bigger than your dataset setting itbit larger should be appropriate with that keep in account of your databasegrowth and re-adjust innodb buffer pool size accordingly)
我这里将 innodb_buffer_pool_size 设置为 42G 即时生效
SET GLOBAL innodb_buffer_pool_size=45097156608;
table_open_cache
默认是64,一些资料推荐把这个数值设置为(max_connections* 查询同时用到的表数)。我实践中发现,一般设置为max_connections就没问题了(如果还不够,可以继续加大,但不能设置大得离谱,可能会引发其他问题)。即时生效的设置
set global table_open_cache=1024;
Innodb_buffer_pool_instances
InnoDB1.1和MySQL5.5中介绍了多Innodb缓冲池。5.5中这个值默认大小是1,而5.6中是8。这个参数的取值范围是1-64。在高并发的任务中允许使用innodb_buffer_pool_instances会非常有效,因为它能够减少全局互斥锁(global mutexes)的存在。
Dump/Restore Buffer Pool
这个参数能够在重启时,提高保存、恢复缓冲池内容的速度。这个特性最早出现在Percona Server 5.5中,可以通过这两篇文章做进一步了解(http://www.percona.com/doc/percona-server/5.5/management/innodb_lru_dump_restore.html?id=percona-server:features:innodb_lru_dump_restore,http://www.mysqlperformanceblog.com/2010/01/20/xtradb-feature-save-restore-buffer-pool/)。MySQL 5.6中也加入了该特性,要在数据库启动或关闭时自动dump数据,需要将innodb_buffer_pool_dump_at_shutdown和innodb_buffer_pool_load_at_startup设置为ON。
innodb_log_file_size
足够大的InnoDB事务日志,对于稳定的、高质量写性能至关重要。但巨大的日志文件同样意味着崩溃以后的恢复会很慢。当然,在5.5进行巨大改进以后,这一点已经不再是经常争论的重点。MySQL 5.6将默认值从5MB调整到50MB,但这个值对于很多情况依然太小。另外,在MySQL 5.6中,如果这个参数值被改变,那么MySQL将会在重启的时候自动调整大小。在MySQL 5.6中,合并后的日志文件大小从4G调整到512G。有关日志最佳大小的问题,可以阅读这篇文章(http://www.mysqlperformanceblog.com/2008/11/21/how-to-calculate-a-good-innodb-log-file-size/)
innodb_log_buffer_size
nnoDB的写操作,将数据写入到内存中的日志缓存中,由于InnoDB在事务提交前,并不将改变的日志写入到磁盘中,因此在大事务中,可以减轻磁盘I/O的压力。通常情况下,如果不是写入大量的超大二进制数据(a lot of huge blobs),4MB-8MB已经足够了。
innodb_flush_log_at_trx_commit
这个值设为1时,将会在每次日志提交时,将日志缓冲(log buffer)中的内容刷入硬盘,以确保数据最大限度的完整性,当然这样也会对性能带来影响。如果设为2,表示每次日志提交时,仅仅将日志缓冲中的内容刷入操作系统的文件缓存。如果你对ACID不那么关注,并且对于OS崩溃前最后一两秒的事务丢失不那么在意的话,设为2将带来更好的性能。
innodb_thread_concurrency
随着InnoDB的改善,现在推荐大家使用默认值0,即由InnoDB引擎自己控制并发。如果你看到并发相关的讨论,可以调整这个参数。推荐值的简单计算方法是(CPU的数量+硬盘数量)*2(2 times the number of CPUs plus the number of disks)。这是一个动态变量,这意味着改变这个值不用重启MySQL即可生效。
innodb_file_per_table
从MySQL 5.6开始,这个值默认是ON。这个是默认值是因为可以避免产生巨大的共享表空间,并且可以在drop和truncate一张表的时候,迅速释放空间。独立的表空间同样在Xtrabackup的部分备份时有优势。
除了以上这些,Percona Server 5.5和MySQL 5.6对InnoDB有很多增强。
.