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 阅读(...) 评论(...) 编辑 收藏