CentOS MySQL 5.7 Compilation installation
MySQL 5.7 GA release, that is, from now on 5.7 can be used in the production environment, there are any problems the official will be repaired immediately.
MySQL 5.7 Key Features:
- Better performance: For multi-core CPUs, solid-state drives, locks have better optimization, 100W QPS per second is no longer the pursuit of MySQL, the next version can be 200W QPS is our users more concerned about
- A better InnoDB storage engine
- More robust replication capabilities: Replication leads to a scenario where data is not lost at all, and traditional financial customers can choose to use the MySQL database. In addition, Gtid online smooth upgrade also becomes possible
- Better optimizer: The meaning of Optimizer code refactoring will bring great improvements in this and later releases, Oracle is addressing MySQL's biggest challenge
- Native JSON type support
- Better geo-Information service support: InnoDB native support for geo-location types, support for Geojson,geohash features
- New SYS library: This will be the most frequently accessed library for DBAs
MySQL 5.7 has been added as a database option to "Oneinstack"
Install dependent packages
?
1 |
yum -y install gcc gcc-c++ ncurses ncurses-devel cmake |
Download the appropriate source package
?
123 |
CD /root/oneinstack/src wget http: //downloads .sourceforge.net Code class= "Bash plain" >/project/boost/boost/1 .59.0 /boost_1_59_0 tar .gz wget http: //cdn .mysql.com /downloads/mysql-5 .7 /mysql-5 .7.11. tar .gz |
Add MySQL User
?
1 |
useradd -M -s /sbin/nologin mysql |
Pre-compilation
?
12345678910111213141516171819 |
tar xzf boost_1_59_0.
tar
.gz
tar xzf mysql-5.7.11.
tar
.gz
mkdir -p
/data/mysql
cd mysql-5.7.11
cmake . -DCMAKE_INSTALL_PREFIX=
/usr/local/mysql \
-DMYSQL_DATADIR=
/data/mysql \
-DDOWNLOAD_BOOST=1 \
#从MySQL 5.7.5开始Boost库是必需的
-DWITH_BOOST=..
/boost_1_59_0 \
-DSYSCONFDIR=
/etc \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DENABLE_DTRACE=0 \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_EMBEDDED_SERVER=1
|
Compiling the installation
?
12 |
make -j ` grep processor /proc/cpuinfo | wc -l` #编译很消耗系统资源,小内存可能编译通不过 make install |
startup script, setting boot from boot
?
1234 |
/bin/cp /usr/local/mysql/support-files/mysql .server /etc/init .d /mysqld chmod +x /etc/init .d /mysqld chkconfig --add mysqld chkconfig mysqld on |
/ETC/MY.CNF, for reference only
?
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 66676869707172737475767778 |
cat >
/etc/my
.cnf << EOF
[client]
port = 3306
socket =
/tmp/mysql
.sock
default-character-
set = utf8mb4
[mysqld]
port = 3306
socket =
/tmp/mysql
.sock
basedir =
/usr/local/mysql
datadir =
/data/mysql
pid-
file =
/data/mysql/mysql
.pid
user = mysql
bind-address = 0.0.0.0
server-
id = 1
init-connect =
‘SET NAMES utf8mb4‘
character-
set
-server = utf8mb4
#skip-name-resolve
#skip-networking
back_log = 300
max_connections = 1000
max_connect_errors = 6000
open_files_limit = 65535
table_open_cache = 128
max_allowed_packet = 4M
binlog_cache_size = 1M
max_heap_table_size = 8M
tmp_table_size = 16M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
sort_buffer_size = 8M
join_buffer_size = 8M
key_buffer_size = 4M
thread_cache_size = 8
query_cache_type = 1
query_cache_size = 8M
query_cache_limit = 2M
ft_min_word_len = 4
log_bin = mysql-bin
binlog_format = mixed
expire_logs_days = 30
log_error =
/data/mysql/mysql-error
.log
slow_query_log = 1
long_query_time = 1
slow_query_log_file =
/data/mysql/mysql-slow
.log
performance_schema = 0
explicit_defaults_for_timestamp
#lower_case_table_names = 1
skip-external-locking
default_storage_engine = InnoDB
#default-storage-engine = MyISAM
innodb_file_per_table = 1
innodb_open_files = 500
innodb_buffer_pool_size = 64M
innodb_write_io_threads = 4
innodb_read_io_threads = 4
innodb_thread_concurrency = 0
innodb_purge_threads = 1
innodb_flush_log_at_trx_commit = 2
innodb_log_buffer_size = 2M
innodb_log_file_size = 32M
innodb_log_files_in_group = 3
innodb_max_dirty_pages_pct = 90
innodb_lock_wait_timeout = 120
bulk_insert_buffer_size = 8M
myisam_sort_buffer_size = 8M
myisam_max_sort_file_size = 10G
myisam_repair_threads = 1
interactive_timeout = 28800
wait_timeout = 28800
[mysqldump]
quick
max_allowed_packet = 16M
[myisamchk]
key_buffer_size = 8M
sort_buffer_size = 8M
read_buffer = 4M
write_buffer = 4M
EOF
|
Initializing the database
Note:
- Previous version mysql_install_db was under Mysql_basedir/script, 5.7 was placed in the Mysql_install_db/bin directory and has been discarded
- "--initialize" generates a random password (~/.mysql_secret), and "--initialize-insecure" does not generate a password
- --datadir cannot have data file under target directory
Start the database
?
1 |
/usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir= /usr/local/mysql --datadir= /data/mysql |
Set Database Password
?
12345 |
dbrootpwd=oneinstack #数据库root密码 /usr/local/mysql/bin/mysql -e "grant all privileges on *.* to [email protected]‘127.0.0.1‘ identified by \"$dbrootpwd\" with grant option;" /usr/local/mysql/bin/mysql -e "grant all privileges on *.* to [email protected]‘localhost‘ identified by \"$dbrootpwd\" with grant option;" |
CentOS MySQL 5.7 Compilation installation