MySQL 5.7.12 二进制安装


1. 下载二进制包

wget http://cdn.mysql.com//archives/mysql-5.7/mysql-5.7.12-linux-glibc2.5-x86_64.tar.gz

2. 上传并解压缩

rz -y
tar xf mysql-5.7.12-linux-glibc2.5-x86_64.tar.gz -C /usr/local/
cd /usr/local
mv mysql-5.7.12-linux-glibc2.5-x86_64.tar.gz mysql

3. 创建用户

useradd mysql

4. 创建数据目录

mkdir /data
chown -R mysql.mysql /data

5. 初始化数据库

cd /usr/local/mysql
bin/mysqld --initialize --basedir=/usr/local/mysql --datadir=/data --user=mysql

6. 编写配置文件

//5.7.12没有自带的配置文件
vim /data/my.cnf
[client]
#password = your_password
port = 3308
socket = /tmp/mysql3308.sock

default-character-set=utf8

[mysqld]
port = 3308
socket = /tmp/mysql3308.sock

datadir=/dbdata

skip-name-resolve #跳过域名解析
wait_timeout = 28800 #与服务器无交互状态的连接,多久强制关闭
interactive_timeout = 28800 #处于交互状态的连接,多久强制关闭

character-set-server=utf8 #数据库实例默认字符集
default-storage-engine = Innodb #默认存储引擎
server-id = 50 #server-id 必须唯一

#临时表大小限制(如果有用到内存表,可以增大)
max-heap-table-size = 16M
tmp_table_size = 16M

#错误日志和PID文件

#二进制日志相关选项
log-bin = /dbdata/var/mysql-bin #开启二进制日志
relay-log = /dbdata/var/relay-bin
binlog_format =row #二进制日志格式
binlog_cache_size = 32M #二进制缓存大小
max_binlog_cache_size = 2G #二进制日志缓存大小的最大值
max_binlog_size = 1G #二进制日志文件大小限制
expire_logs_days = 14 #二进制日志过期时间(为防二进制日志文件太大,删除14天以前的日志)

#慢查询日志相关
slow-query-log = On
slow_query_log_file = /dbdata/mysql3308_slow_query.log
long_query_time = 2
log_queries_not_using_indexes = ON

#连接数相关
max_connect_errors = 100000 #最大连接错误数,超过该值,客户端无法连接(flush hosts可以重设该值为0)
max_connections = 5000 #最大连接数

open_files_limit = 65535 #mysql打开文件描述符的限制
table_definition_cache = 512 #表定义信息的缓存大小(根据库中表多少决定,每张表一个对象,无文件句柄)

thread_cache_size = 512 #线程缓存

sync_binlog = 1 #多少个事务会把binlog_cache刷盘到binlog日志文件
transaction-isolation = READ-COMMITTED #事务级别

query_cache_type = 0 #如果是以读为主的业务,根据需求开启
query_cache_size = 0 #如果是以读为主的业务,根据需求调整大小

key_buffer_size = 64M #MyISAM表的索引缓存大小,如果MyISAM表较多,可以适当调大

#以下缓存区为需要时分配,一次性分配设置大小(会话变量)
read_buffer_size = 256k #mysql 读入缓冲区大小(顺序扫描)
read_rnd_buffer_size = 256k #mysql随机读缓冲区大小
sort_buffer_size = 8M #mysql排序缓存区大小
join_buffer_size = 8M #mysqljoin缓存区大小

#innodb 存储引擎相关x
#innodb_file_io_threads = 8 #innodb io线程数目(5.1+plugin版本 )
innodb_read_io_threads = 4 #(5.5以上版本)
innodb_write_io_threads = 4 #(5.5以上版本)
innodb_io_capacity = 600 #磁盘的IOPS能力(15K转SAS盘 差不多200普通SATA盘100)(5.1+plugin版本 或者5.5以上)
innodb_buffer_pool_size = 1G #buffer pool大小(两台备份机上需要修改为5G)
innodb_file_per_table = 1 #单表空间
innodb_flush_log_at_trx_commit = 2 #每事务提交到log_buffer,一秒从log_huffer刷新到磁盘
innodb_flush_method = O_DIRECT #buffer pool 刷盘 不用文件系统缓存,直接刷新到磁盘
innodb_lock_wait_timeout = 60 #innodb锁超时时间(超时后回滚代价较小的事务)
innodb_log_buffer_size = 16M #redo日志缓存区大小
innodb_log_file_size = 512M #每个redo日志的大小
innodb_log_files_in_group = 2 #几组redo日志
innodb_max_dirty_pages_pct = 90 #该值为脏页达到buffer pool 的百分比 开始将bufer pool的页面刷到磁盘
innodb_thread_concurrency = 0 #innodb 并发线程数,0为不限制
#innodb_additional_mem_pool_size=8M #innodb附加缓存(保存innodb的数据字典信息和内部数据结构),如果buffer_pool较大,可以适当调整
innodb_data_file_path = ibdata1:12M;ibdata2:100M:autoextend

innodb_file_format = "Barracuda" #5.5以上
innodb_file_format_max = "Barracuda"

[mysql]
no-auto-rehash
default-character-set=utf8

注意:
innodb_data_file_path = ibdata1:12M,这里设置的ibdata1的大小要和数据目录下ibdata1的实际大小保持一致,ibdata2可以根据需要来设置。(初始化之后会在data下生成)

7. 启动mysql

cd /usr/local/mysql
bin/mysqld_safe --defaults-file=/data/my.cnf --user=mysql
//注意:defaults-file参数要放在第一位,否则不识别。

8. 修改root密码

1) bin/mysqld_safe --defaults-file=/data/my.cnf --skip-grant-tables --user=mysql
2) mysql -uroot -S /tmp/mysql.sock
3) update mysql.user set authentication_string=password("abc.123") where user='root' and host='localhost';
4) flush privileges;
5) exit
6) kill掉mysql的进程
7) bin/mysqld_safe --defaults-file=/data/my.cnf --user=mysql
//这里,更改完毕后,进来之后还是提示alter user…,所以也可以使用SET命令
set password for 'root'@'localhost'=password('123');
alter user 'root'@'localhost' PASSWORD EXPIRE NEVER;(可省略,用于更新账户期限)
flush privileges;

注意:
在新版的数据库中已经没有password字段,统一更改为authentication_string.

遇到的问题

1. 使用mysql_install_db初始化数据库失败,查阅官方文档提示mysql-5.7.6以前的版本使用bin/mysql_install_db进行初始化,mysql-5.7.6以后的版本需要使用bin/mysqld来进行初始化,具体的命令为:

bin/mysql --initialize --basedir=/usr/local/mysql --datadir=/data/mysql --user=mysql

在输出的信息中没有ERROR表示成功(这里和5.7.6以下的初始化完毕会有两个OK不同),并且在信息的末行会打印出root用户的密码(基础安全)
2. mysql 5.5,mysql 5.6上的慢查询日志参数log-slow-queries已取消,变为

slow-query-log = On #开启慢查询
slow_query_log_file = /data/mysql/log/mysql_slow_query.log #定义慢查询日志的路径
long_query_time = 2 #定义查过多少秒的查询算是慢查询
log_queries_not_using_indexes = ON #记录下没有使用索引的query

3. 登录安装好的数据库输入任何命令提示: ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement,需要我们更改root用户的密码,更改方式如下:

SET PASSWORD = PASSWORD(‘your password’)
alter user ‘root’@’’’’localhost’ PASSWORD EXPIRE NEVER;
flush privileges;

4、在mysql-5.7.12中innodb_additional_mem_pool_size=8M参数已经被取消

posted @ 2016-11-18 16:41 Dahlhin 阅读(...) 评论(...)  编辑 收藏
01-13 14:52