测试环境
介质 | 版本 |
---|---|
操作系统 | Red Hat Enterprise Linux Server release 6.8 (Santiago) |
数据库 | MySQL-5.6.30 |
下载rpm安装包和xtrabackup备份工具安装包。
以root用户登录
# mkdir -p /root/mysql # cd /root/mysql # wget -c --ftp-user=ftp --ftp-password=ftp ftp://172.16.82.254/pub/installpkg/database/mysql/MySQL-5.6.30-1.rhel5.x86_64.rpm-bundle.tar # wget -c --ftp-user=ftp --ftp-password=ftp ftp://172.16.82.254/pub/installpkg/database/mysql/xtrabackup-2.3.3.tar.gz
2、环境配置
删除MyQL-libs包。
(RedHat6.7服务器自带的mysql-libs是mysql-libs-5.1.61-4.el6.x86_64,可能会和高版本的mysql-libs有冲突)
#yum list |grep mysql #yum remove mysql-libs*
3、开始安装
# cd /root/mysql # tar -xvf MySQL-5.6.30-1.rhel5.x86_64.rpm-bundle.tar # rpm -ivh MySQL-server-5.6.30-1.rhel5.x86_64.rpm # rpm -ivh MySQL-client-5.6.30-1.rhel5.x86_64.rpm (shared-compat包为xtrabackup依赖) # rpm -ivh MySQL-shared-compat-5.6.30-1.rhel5.x86_64.rpm
4、启停服务
# service mysql start # service mysql stop
查看服务状态
# service mysql status SUCCESS! MySQL running (10899) # ps -ef |grep mysql root 10639 1 0 Apr10 ? 00:00:00 /bin/sh /usr/bin/mysqld_safe --datadir=/u01/app/mysql/data/mysql3306/data --pid-file=/u01/app/mysql/data/mysql3306/data/cs-db-05.pid mysql 10899 10639 0 Apr10 ? 00:01:19 /usr/sbin/mysqld --basedir=/usr --datadir=/u01/app/mysql/data/mysql3306/data --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/u01/app/mysql/data/mysql3306/data/cs-db-05.err --pid-file=/u01/app/mysql/data/mysql3306/data/cs-db-05.pid --socket=/u01/app/mysql/data/mysql3306/run/mysql.sock 其中mysqld_safe为root启动,为mysql服务的守护进程,监控mysql运行,若mysql进程故障可能会重启mysql进程。 mysqld进程为mysql启动,为mysql服务进程,mysql为单进程多线程设计,因此主服务只有这一个进程。 因为该进程为mysql用户启动,故mysql的数据目录需要给mysql用户所有权限。(后续迁移datadir需注意)
5、更改root用户密码
查看系统初始化root密码 # more /root/.mysql_secret # The random password set for the root user at Mon Oct 9 16:45:47 2017 (local time): g8XenJIjEe4MvITl 更改root用户密码 # mysql -u root -p Enter password: Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> SET PASSWORD = PASSWORD('niwodai#2017'); Query OK, 0 rows affected (0.00 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec)
6、创建新数据库及用户
创建数据库,名字为forum mysql> create schema wjf default character set utf8 collate utf8_general_ci; 创建用户 mysql> create user 'wjf'@'%' identified by 'wjf_pwd'; 刷新权限生效 mysql> flush privileges ;
7、rpm方式安装默认路径说明
查看参数方式
mysql> show variables like '%dir%';
默认参数设置
basedir: /usr
相当于oracle的ORACLE_HOME,放置目录bin、share、my.cnf配置文件等。
datadir:/var/lib/mysql
存放数据文件的目录,比如系统表空间,创建的数据库等都放在该目录。
my.cnf配置文件: /usr/
mysql的主要配置文件,默认放在该目录下。mysql读取配置文件有一个顺序,类似linux中shell环境变量的配置顺序一样,后读文件配置覆盖前面文件中的参数配置。具体顺序可以使用以下命令查看。
# mysql --help |grep my.cnf order of preference, my.cnf, $MYSQL_TCP_PORT, /etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf
8、迁移datadir
迁移datadir到/data/mysql/
创建目录 # mkdir -p /data/mysql/ 停止服务 # service mysql stop 拷贝原datadir下内容到新的datadir下。 # cp -R /var/lib/mysql/* /data/mysql/ 修改目录权限 #chown -R mysql:mysql /data/ 修改my.cnf配置。 # mv /usr/my.cnf /etc/ # vi /etc/my.cnf #增加如下内容(其他调整内容参见最后 10、参数配置 章节) [mysqld] datadir=/data/mysql/ 启动服务 #service mysql start
9、安装xtrabackup备份工具
安装依赖包 # cd /root/mysql # tar -xvzf xtrabackup-2.3.3.tar.gz # cd /root/mysql/xtrabackup # rpm -ivh libev-4.15-1.el5.rf.x86_64.rpm # yum -y install perl perl-devel libaio libaio-devel perl-Time-HiRes perl-DBD-MySQL rsync 安装备份软件 # rpm -ivh percona-xtrabackup-2.3.3-1.el6.x86_64.rpm
10、参数配置
vi /etc/my.cnf #参考文档:https://github.com/jdaaaaaavid/mysql_best_configuration #mysqld部分修改为如下内容 [mysqld] # basic settings # user = mysql sql_mode = "STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER" autocommit = 1 server-id = 8888 character_set_server=utf8mb4 datadir=/data/mysql/ transaction_isolation = READ-COMMITTED explicit_defaults_for_timestamp = 1 max_allowed_packet = 64M event_scheduler = 1 # connection # interactive_timeout = 1800 wait_timeout = 1800 lock_wait_timeout = 1800 skip_name_resolve = 1 max_connections = 1024 max_user_connections = 512 max_connect_errors = 1000000 # table cache performance settings table_open_cache = 2048 table_open_cache_instances = 16 # session memory settings # read_buffer_size = 16M ###(内存大小(单位G)/16 单位M)进行设置,如16G内存设置为1M read_rnd_buffer_size = 32M ###(内存大小/8)M sort_buffer_size = 32M ###(内存大小/8)M tmp_table_size = 64M ###(内存大小/4)M join_buffer_size = 128M ###(内存大小/2)M thread_cache_size = 64 # log settings # log_error = error.log log_bin = binlog general_log_file = general.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 = 10 long_query_time = 5 min_examined_row_limit = 100 log-bin-trust-function-creators = 1 log-slave-updates = 1 # innodb settings # innodb_page_size = 16384 innodb_buffer_pool_size = 160G ###(内存大小 * 0.6) innodb_buffer_pool_instances = 16 ### (CPU数 / 2) innodb_buffer_pool_load_at_startup = 1 innodb_buffer_pool_dump_at_shutdown = 1 innodb_lru_scan_depth = 4096 innodb_lock_wait_timeout = 5 innodb_io_capacity = 5000 ###ssd:5000,(SAS*12 RAID 10):2000,单盘SAS:200 innodb_io_capacity_max = 10000 ###innodb_io_capacity * 2 innodb_flush_method = O_DIRECT innodb_undo_logs = 128 innodb_flush_neighbors = 0 innodb_log_file_size = 16G ###(内存大小 * 0.06) innodb_log_files_in_group = 2 innodb_log_buffer_size = 64M ###(内存大小/4)M innodb_purge_threads = 4 innodb_large_prefix = 1 innodb_print_all_deadlocks = 1 innodb_strict_mode = 1 innodb_sort_buffer_size = 128M ###(内存大小/2)M innodb_write_io_threads = 16 ###(CPU数 / 2) innodb_read_io_threads = 16 ###(CPU数 / 2) innodb_file_per_table = 1 innodb_online_alter_log_max_size=1G innodb_open_files=2048 # replication settings # master_info_repository = TABLE relay_log_info_repository = TABLE sync_binlog = 1 enforce_gtid_consistency = 1 log_slave_updates binlog_format = ROW binlog_rows_query_log_events = 1 relay_log = relay.log relay_log_recovery = 1 slave_skip_errors = ddl_exist_errors slave-rows-search-algorithms = 'INDEX_SCAN,HASH_SCAN' # perforamnce_schema settings performance-schema-instrument='memory/%=COUNTED' performance_schema_digests_size = 40000 performance_schema_max_table_instances = 40000 performance_schema_max_digest_length = 4096