CentOSMySQL 5.7 detailed instructions for compiling and installing the steps

  • 2020-05-15 03:21:03
  • OfStack

CentOSMySQL 5.7 build and install

Release of MySQL 5.7 GA version, which means that 5.7 can be used in production environment from now on, and any problems will be fixed by the official immediately.

MySQL 5.7 main features:

Better performance: better optimization for multi-core CPU, SSD, lock, 100W QPS per second is no longer the pursuit of MySQL, whether the next version of 200W QPS is our users more concern Better InnoDB storage engine More robust replication capabilities: replication provides the option of not losing data at all, and traditional financial customers can also choose to use the MySQL database. In addition, an online smooth upgrade of GTID is also possible Better optimizer: the meaning of the optimizer's code refactoring will be greatly improved in this release and beyond, and Oracle officials are addressing one of MySQL's biggest challenges Native JSON type support Better geographic information service support: InnoDB native support for geographical location types, GeoJSON support, GeoHash features New sys library: this will be the most visited library by DBA in the future

MySQL 5.7 has been added to OneinStack as a database option

Install dependency package


yum -y install gcc gcc-c++ ncurses ncurses-devel cmake

Download the source package


cd /root/oneinstack/src
wget http://downloads.sourceforge.net/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 users


useradd -M -s /sbin/nologin mysql

precompiled


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 \  # from MySQL 5.7.5 start Boost Libraries are required 
-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

Compile the installation


make -j `grep processor /proc/cpuinfo | wc -l` # Compilation consumes system resources and may fail with small memory 
make install

Start the script and set the boot to start


/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


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

Initialize the database

Note:

The previous version mysql_install_db was under mysql_basedir/script, 5.7 was under mysql_install_db/bin, and has been scrapped "--initialize" will generate a random password (~/.mysql_secret), while "-- initialize-insecure "will not generate a password -- data files cannot be found in the datadir target directory

Start database


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

Set the database password


dbrootpwd=oneinstack # The database root password 
/usr/local/mysql/bin/mysql -e "grant all privileges on *.* to root@'127.0.0.1' identified by \"$dbrootpwd\" with grant option;"
/usr/local/mysql/bin/mysql -e "grant all privileges on *.* to root@'localhost' identified by \"$dbrootpwd\" with grant option;"

 

Thank you for reading, I hope to help you, thank you for your support of this site!


Related articles: