安装MySQL
一、MySQL官方网站介绍
1.Developer Zone : MySQL开发工程师板块
Articles : Oracle工程师自己的博客
Plant MySQL : 和MySQL相关从业人员的博客
Bugs : MySQL BugList
Worklog : 开发记录
Labs : MySQL实验性项目
2.Downloads : MySQL下载
Enterprise : MySQL企业版本相关,略过
Community : 社区版,我们下载和使用社区版
MySQL Community Server : MySQL Server
MySQL Fabric : 和管理相关的工具
MySQL Router : 路由中间件
MySQL Utilities : MySQL应用程序包
MySQL Proxy : MySQL代理。Alpha版本,不推荐
3.Documentation : MySQL文档
官方文档版面更改,下线离线文档在左侧Menu的下面
PDF A4
EPUB
HTML
二、MySQL下载
1.推荐下载Linux-Generic 版本
2.Source Code 版本主要作用是为了让开发人员研究源码使用,自己编译对性能提升不明显
3.不推荐 Version 5.5.x ,有部分bug
4.推荐使用Version 5.6.x 和Version 5.7.x
下载地址:
MySQL Community Server 5.7.9 Linux Generic x86-64bit
MySQL Community Server 5.6.27 Linux Generic x86-64bit
三、MySQL安装
MySQL 5.7.X安装
shell>groupadd mysql
shell>useradd -r -g mysql mysql
shell>cd /usr/local
shell>tar zxvf /path/to/mysql-VERSION-OS.tar.gz
shell>ln -s full-path-to-mysql-VERSION-OS mysql
shell>cd mysql
shell>mkdir mysql-files
shell>chmod 770 mysql-files
shell>chown -R mysql .
shell>chgrp -R mysql .
shell>bin/mysqld --initialize --user=mysql # 该步骤中会产生临时的root@localhost密码,需要自己记录下来
shell>bin/mysql_ssl_rsa_setup
shell>chown -R root .
shell>chown -R mysql data mysql-files
shell>bin/mysqld_safe --user=mysql &
# Next command is optional
shell> cp support-files/mysql.server /etc/init.d/mysqld
# chkconfig --add mysqld
# chkconfig mysqld on
# systemctl start mysqld
# echo "export PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
# source /etc/profile
使用临时密码登录mysql后,系统会提示你要修改密码
shell>cat `cat /etc/my.cnf|grep log_err |awk -F '=' '{print $2}'` |grep password |awk '{print $NF}'
mysql> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
mysql> set password=password('123');
Query OK, 0 rows affected, 1 warning (5.00 sec)
MySQL启动
mysqld_safe --user=mysql & 即可启动,mysqld_safe 是一个守护mysqld 进程的脚本程序,旨在 mysqld 意外停止时,可以重启mysqld进程
也可以通过 INSTALL_BINARRY 中的步骤,使用/etc/init.d/mysql.server start 进行启动(启动脚本以你复制的实际名字为准,通常改名为mysqld 即 /etc/init.d/mysqld start)
配置文件my.cnf
[mysqld]
federated
########basic settings########
server-id = 11
port = 3306
user = mysql
bind_address = 10.166.224.32 #根据实际情况修改
autocommit = 0 # 5.6.X安装时,需要注释掉,安装完成后在打开
character_set_server=utf8mb4 默认字符集
skip_name_resolve = 1 禁止域名解析
max_connections = 800
max_connect_errors = 1000
datadir = /data/mysql_data #根据实际情况修改,建议和程序分离存放
#datadir = /usr/local/mysql-5.6.27-linux-glibc2.5-x86_64/data
transaction_isolation = READ-COMMITTED
explicit_defaults_for_timestamp = 1
join_buffer_size = 134217728
tmp_table_size = 67108864
tmpdir = /tmp
max_allowed_packet = 16777216
sql_mode = "STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER"
interactive_timeout = 1800 服务器关闭交互式连接前等待活动的秒数。交互式客户端定义为在mysql_real_connect()中使用CLIENT_INTERACTIVE选项的客户端。
wait_timeout = 1800 服务器关闭非交互连接之前等待活动的秒数。
read_buffer_size = 16777216
read_rnd_buffer_size = 33554432
sort_buffer_size = 33554432
########log settings########
log_error = error.log
slow_query_log = 1
slow_query_log_file = slow.log
log_queries_not_using_indexes = 1
log_slow_admin_statements = 1
log_slow_slave_statements = 1
log_throttle_queries_not_using_indexes = 10
expire_logs_days = 90
long_query_time = 2
min_examined_row_limit = 100
########replication settings########
master_info_repository = TABLE
relay_log_info_repository = TABLE
#log_bin = bin.log
sync_binlog = 1
#gtid_mode = on
#enforce_gtid_consistency = 1
#log_slave_updates
binlog_format = row
relay_log = relay.log
relay_log_recovery = 1
binlog_gtid_simple_recovery = 1
slave_skip_errors = ddl_exist_errors
########innodb settings########
innodb_page_size = 8192
innodb_buffer_pool_size = 2G ##根据实际情况修改
innodb_buffer_pool_instances = 8
innodb_buffer_pool_load_at_startup = 1
innodb_buffer_pool_dump_at_shutdown = 1
innodb_lru_scan_depth = 2000
innodb_lock_wait_timeout = 5
innodb_io_capacity = 4000
innodb_io_capacity_max = 8000
innodb_flush_method = O_DIRECT
innodb_file_format = Barracuda
innodb_file_format_max = Barracuda
#innodb_log_group_home_dir = /redolog/ #根据实际情况修改
#innodb_undo_directory = /undolog/ #根据实际情况修改
innodb_undo_logs = 128
innodb_undo_tablespaces = 3
innodb_flush_neighbors = 1
innodb_log_file_size = 4G #根据实际情况修改
innodb_log_buffer_size = 16777216
innodb_purge_threads = 1
innodb_large_prefix = 1
innodb_thread_concurrency = 64
innodb_print_all_deadlocks = 1
innodb_strict_mode = 1
innodb_sort_buffer_size = 67108864
########semi sync replication settings########
plugin_dir=/usr/local/mysql/lib/plugin #根据实际情况修改
plugin_load = "rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"
loose_rpl_semi_sync_master_enabled = 1
loose_rpl_semi_sync_slave_enabled = 1
loose_rpl_semi_sync_master_timeout = 5000
[mysqld-5.7]
innodb_buffer_pool_dump_pct = 40
innodb_page_cleaners = 4
innodb_purge_threads = 4
innodb_undo_log_truncate = 1
innodb_max_undo_log_size = 2G
innodb_purge_rseg_truncate_frequency = 128
binlog_gtid_simple_recovery=1
log_timestamps=system
transaction_write_set_extraction=MURMUR32
#binlog_checksum=NONE # only for group replication
#group replication setting
#plugin_load=group_replication.so
#loose_group_replication_group_name=e5720089-6b00-11e5-b248-fa163e30f9a2
#loose_group_replication_start_on_boot=1
#loose_group_replication_recovery_user='rpl_user'
#loose_group_replication_recovery_password='rpl_pass'
show_compatibility_56=on
[mysqld_multi]
mysqld = mysqld_safe
log=/usr/local/mysql/mysql_multi.log
[mysqld1]
server-id=111
basedir=/usr/local/mysql
datadir=/data1
port=3307
socket=/tmp/mysql.sock1
[mysqld2]
server-id=222
basedir=/usr/local/mysql
datadir=/data2
port=3308
socket=/tmp/mysql.sock2
[mysqld3]
server-id=333
basedir=/usr/local/mysql56
datadir=/data3
port=3309
socket=/tmp/mysql.sock3
几个重要的参数配置和说明
innodb_log_file_size=4G 做实验可以更改的小点,线上环境推荐使用4G,以前5.5和5.1等版本之所以官方给的值很小,是因为太大后有BUG,现在BUG已经修复
innodb_undo_logs = 128 和 innodb_undo_tablespaces = 3 建议在安装之前就确定好该值,后续修改比较麻烦
[mysqld], [mysqld-5.7] 这种 tag 表明了下面的配置什么版本下才生效,[mysqld]下均生效
autocommit 这个参数在5.5.X以后才有,安装5.6.X的时候要注意先把该参数注释掉,等安装完成后,在打开,5.7.X无需预先注释
datadir, innodb_log_group_home_dir, innodb_undo_directory 一定要注意他的权限是 mysql:mysql
四、mysql-utilities 的安装
tar xvf mysql-utilities-1.6.5.tar.gz
cd mysql-utilities-1.6.5
yum -y install mysql-utilities.noarch
python ./setup.py build
python ./setup.py install
安装完成,至此mysqlfrm mysqlrplshow等功能都可以使用了。