×

Ubuntu 14.04 安装 MySQL 5.7.18 及使用

96
卡尔是正太
2017.07.01 18:11* 字数 1504

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有很多增强。

.

`13 的学习笔记
Web note ad 1