本文包含了RHEL编译安装5.6 和 5.7的全部过程。
1. 如果需要重新变异, 清理CMakeCache.txt文件。 并运行CMAKE
2. BOOST库支持 首先删除BOOST库yum install -y boost.x86_64 然后需要指向到安装包里面的boost库目录 3. ncurses库支持 yum search ncurses 4. 5.7编译cmake要求版本最低为2.8,需要重新安装CMAKE 首先删除 yum reinstall cmake 然后手动变异安装cmake 5. 其他组件相关:基本组件 yum install gcc gcc-c++ -y yum install -y ncurses-devel.x86_64 yum install -y libaio.x86_64 yum install -y bison.x86_64 yum install -y gcc-c++.x86_64 yum install -y libtoo* yum install -y automake 5.1 安装jemalloc,优化步骤 cd /app/source wget http://www.canonware.com/download/jemalloc/jemalloc-4.1.1.tar.bz2 tar xjf jemalloc-4.1.1.tar.bz2 cd jemalloc-3.6.0 ./configure make && make install echo '/usr/local/lib' > /etc/ld.so.conf.d/local.conf ldconfig ldconfig -p | grep jemalloc 5.2 安装cmake cd cmake-2.8.9 ./configure make -j 12 make -j 12 install cmake --version 5.3 Hugepages配置 /etc/sysctl.conf ###add for hugepages,系统一共64G内存, 50G内存给mysql使用, 保留14G给操作系统使用 vm.nr_hugepages=25600 vm.swappiness=1 cat /etc/security/limits.conf * soft memlock 52539381 * hard memlock 52539381 6. 快速make make -j `grep processor /proc/cpuinfo |wc -l` 7. 添加用户 useradd mysql1 useradd mysql2 echo 'mysql#123' | passwd --stdin mysql1 echo 'mysql#123' | passwd --stdin mysql1 7.1 磁盘挂载参数 pvcreate /dev/xvdf vgcreate datavg /dev/xvdf lvcreate -L 480G -n mysqldata datavg mkfs.ext4 /dev/datavg/mysqldata ###########挂载参数优化 mount /dev/datavg/mysqldata /mysqldata -o rw,noatime,nodiratime,nobarrier,data=ordered -t ext4 7.2 建立目录 mkdir -p /mysqldata/mysql1/log mkdir -p /mysqldata/mysql1/bin mkdir -p /mysqldata/mysql1/data mkdir -p /mysqldata/mysql1/run mkdir -p /mysqldata/mysql1/bin/mysql-bin chown -R mysql1:mysql1 /mysqldata/mysql1 8. 编译配置 8.1 注意反斜杠后面不能有空格\反斜杠后面必须接回车 8.2 MySQL5.7编译参数设置 主库参数---: /usr/local/bin/cmake \ -DWITH_BOOST=/ecs/mysql-5.7.12/boost/ \ -DCMAKE_INSTALL_PREFIX=/home/mysql1/mysql \ -DMYSQL_DATADIR=/mydata/mysql1/data \ -DWITH_MYISAM_STORAGE_ENGINE=1 \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_ARCHIVE_STORAGE_ENGINE=1 \ -DWITH_FEDERATED_STORAGE_ENGINE=1 \ -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ -DMYSQL_UNIX_ADDR=/mysqldata/mysql1/run/mysql.sock \ -DMYSQL_TCP_PORT=3301 \ -DENABLED_LOCAL_INFILE=1 \ -DENABLE_DOWNLOADS=1 \ -DWITH_PARTITION_STORAGE_ENGINE=1 \ -DEXTRA_CHARSETS=all \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ -DWITH_DEBUG=0 \ -DMYSQL_MAINTAINER_MODE=0 \ -DWITH_SSL:STRING=bundled \ -DWITH_ZLIB:STRING=bundled 备库参数---: /usr/local/bin/cmake \ -DWITH_BOOST=/ecs/mysql-5.7.12/boost/ \ -DCMAKE_INSTALL_PREFIX=/home/mysql2/mysql \ -DMYSQL_DATADIR=/mydata/mysql2/data \ -DWITH_MYISAM_STORAGE_ENGINE=1 \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_ARCHIVE_STORAGE_ENGINE=1 \ -DWITH_FEDERATED_STORAGE_ENGINE=1 \ -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ -DMYSQL_UNIX_ADDR=/mysqldata/mysql2/run/mysql.sock \ -DMYSQL_TCP_PORT=3301 \ -DENABLED_LOCAL_INFILE=1 \ -DENABLE_DOWNLOADS=1 \ -DWITH_PARTITION_STORAGE_ENGINE=1 \ -DEXTRA_CHARSETS=all \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ -DWITH_DEBUG=0 \ -DMYSQL_MAINTAINER_MODE=0 \ -DWITH_SSL:STRING=bundled \ -DWITH_ZLIB:STRING=bundled 8.2 MySQL5.6编译参数设置 /usr/local/bin/cmake \ -DCMAKE_INSTALL_PREFIX=/home/mysql3/mysql \ -DMYSQL_DATADIR=/mydata/mysql3/data \ -DWITH_MYISAM_STORAGE_ENGINE=1 \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_ARCHIVE_STORAGE_ENGINE=1 \ -DWITH_FEDERATED_STORAGE_ENGINE=1 \ -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ -DMYSQL_UNIX_ADDR=/mysqldata/mysql3/run/mysql.sock \ -DMYSQL_TCP_PORT=3301 \ -DENABLED_LOCAL_INFILE=1 \ -DENABLE_DOWNLOADS=1 \ -DWITH_PARTITION_STORAGE_ENGINE=1 \ -DEXTRA_CHARSETS=all \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ -DWITH_DEBUG=0 \ -DMYSQL_MAINTAINER_MODE=0 \ -DWITH_SSL:STRING=bundled \ -DWITH_ZLIB:STRING=bundled 8.3 初始化MySQL数据库 ./mysql_install_db --basedir=/home/mysql1/mysql --datadir=/mysqldata/mysql1/data --user=mysql1 --skip-name-resolve ./mysql_install_db --basedir=/home/mysql2/mysql --datadir=/mysqldata/mysql2/data --user=mysql2 --skip-name-resolve 8.4 启动MySQL /home/mysql1/mysql/bin/mysqld_safe --defaults-file=/etc/my1.cnf --user=mysql1 --datadir=/mysqldata/mysql1/data & /home/mysql2/mysql/bin/mysqld_safe --defaults-file=/etc/my2.cnf --user=mysql2 --datadir=/mysqldata/mysql2/data & 8.5 改root密码: /home/mysql1/mysql/bin/mysqladmin -S /mysqldata/mysql1/run/mysql.sock -u root password 'root123' /home/mysql2/mysql/bin/mysqladmin -S /mysqldata/mysql2/run/mysql.sock -u root password 'root123' ============================mysql for 5.6 ================================== 9. 初始化mysql5.7 数据库 9.1 主库 ###有效初始化启动方法# bin/mysqld --initialize --user=mysql1 --basedir=/home/mysql1/mysql --datadir=/mysqldata/mysql1/data bin/mysqld_safe --defaults-file=/etc/my1.cnf --user=mysql1 --datadir=/mysqldata/mysql1/data & ###初始化以后需要改变生成的随机root密码 ALTER USER 'root'@'localhost' IDENTIFIED BY 'root123'; flush privileges; ############最终初始化和启动结果t###################### bin/mysqld --defaults-file=/etc/my1.cnf --initialize --user=mysql1 --basedir=/home/mysql1/mysql --datadir=/mysqldata/mysql1/data bin/mysqld_safe --defaults-file=/etc/my1.cnf --user=mysql1 --datadir=/mysqldata/mysql1/data & ############最终初始化和启动结果t###################### 9.2 备库 mkdir -p /mysqldata/mysql2/log mkdir -p /mysqldata/mysql2/bin mkdir -p /mysqldata/mysql2/data mkdir -p /mysqldata/mysql2/run mkdir -p /mysqldata/mysql2/bin/mysql-bin chown -R mysql2:mysql2 /mysqldata/mysql2 #####初始化并启动备库 bin/mysqld --initialize --user=mysql --basedir=/home/mysql/mysql1 --datadir=/mysqldata/mysql2/data bin/mysqld_safe --defaults-file=/etc/my2.cnf --user=mysql2 --datadir=/mysqldata/mysql2/data & 10.2 jemalloc优化到mysql sed -i 's@executing mysqld_safe@executing mysqld_safe\nexport LD_PRELOAD=/usr/local/lib/libjemalloc.so@' ./mysqld_safe lsof -n | grep malloc 10.#######系统禁用THP ########THP说明############ Transparent HugePages memory is enabled by default with Red Hat Enterprise Linux 6, SUSE Linux Enterprise Server 11, and Oracle Linux 6 with earlier releases of Oracle Linux Unbreakable Enterprise Kernel 2 (UEK2) kernels. Transparent HugePages memory is disabled in later releases of Oracle Linux UEK2 kernels. Transparent HugePages can cause memory allocation delays during runtime. To avoid performance issues, Oracle recommends that you disable Transparent HugePages on all Oracle Database servers. Oracle recommends that you instead use standard HugePages for enhanced performance. Transparent HugePages memory differs from standard HugePages memory because the kernel khugepaged thread allocates memory dynamically during runtime. Standard HugePages memory is pre-allocated at startup, and does not change during runtime. o check if Transparent HugePages memory is enabled, run one of the following commands as the root ########THP说明############ cat /sys/kernel/mm/redhat_transparent_hugepage/enabled echo never> /sys/kernel/mm/redhat_transparent_hugepage/enabled cat /sys/kernel/mm/redhat_transparent_hugepage/defrag echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag echo 'echo never> /sys/kernel/mm/redhat_transparent_hugepage/enabled' >> /etc/rc.local echo 'echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag '>> /etc/rc.local 11. 主从配置: 11.1 主库建立复制账号: grant replication slave on *.* to 'repl_bcdb'@'%' identified by 'Br13j_Hhrhl'; flush privileges; 主库查看当前状态: 初始化主库,清理所有bin-log日志 reset master; show master status; 11.2 从库 change master to master_host='10.143.22.202', MASTER_PORT=3301, master_user='repl_bcdb', master_password='Br13j_Hhrhl', master_log_file='mysql-bin.000001', master_log_pos=120; start slave;