從事DBA工作多年 MYSQL源碼也是頭一次接觸 嘗試記錄下自己看MYSQL5.7源碼的歷程 目錄: 51ak帶你看MYSQL5.7源碼1:main入口函數 51ak帶你看MYSQL5.7源碼2:編譯現有的代碼 現在把剛纔在VSCODE里看到的源碼,安裝成服務。 測試機:CENTOS6 (虛機配置為 ...
從事DBA工作多年
MYSQL源碼也是頭一次接觸
嘗試記錄下自己看MYSQL5.7源碼的歷程
目錄:
現在把剛纔在VSCODE里看到的源碼,安裝成服務。
測試機:CENTOS6 (虛機配置為4c+4g ),
YUM安裝相關組件
yum -y install gcc-c++ ncurses-devel cmake make perl gcc autoconf automake zlib libxml libgcrypt libtool bison
執行完成後看一下現有的BOOTST版本 如果有刪掉
root@wjz-3-227 ~]# rpm -qa boost* boost-filesystem-1.41.0-18.el6.x86_64 boost-system-1.41.0-18.el6.x86_64 [root@wjz-3-227 ~]# yum -y remove boost-* Loaded plugins: fastestmirror, refresh-packagekit, security Setting up Remove Process Resolving Dependencies --> Running transaction check
上傳我們編輯好的文件到測試機,放在/work目錄下
拷貝安裝BOOST
root@wjz-3-227 mysql-server]# ll total 108 drwxr-xr-x. 8 root root 4096 Mar 22 2018 boost_1_59_0 -rw-r--r--. 1 root root 160 Dec 28 12:00 filter-provides.sh -rw-r--r--. 1 root root 176 Dec 28 12:00 filter-requires.sh drwxr-xr-x. 32 root root 4096 Mar 22 2018 mysql-5.1.72 drwxr-xr-x. 35 root root 4096 Mar 22 2018 mysql-5.7.21 -rw-r--r--. 1 root root 88859 Dec 28 12:00 mysql.spec [root@wjz-3-227 mysql-server]# cp -r boost_1_59_0 /usr/local/boost
執行以下腳本
groupadd mysql mkdir /home/mysql mkdir /home/mysql/data useradd mysql -g mysql -d /home/mysql cd mysql-5.7.21/ mkdir debug cd debug
開始MAKE
cmake .. \ -DCMAKE_INSTALL_PREFIX=/home/mysql \ -DMYSQL_DATADIR=/home/mysql/data \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ -DMYSQL_TCP_PORT=3306 \ -DMYSQL_USER=mysql \ -DWITH_MYISAM_STORAGE_ENGINE=1 \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_ARCHIVE_STORAGE_ENGINE=1 \ -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ -DDOWNLOAD_BOOST=1 \ -DWITH_BOOST=/usr/local/boost
出現 下圖表示成功。
make -j 4
漫長的等待,編譯成功(測試機性能太次)
下麵安裝和初始化:
make install make clean rm -f CMakeCache.txt cd /home/mysql chown -R mysql:mysql . ll bin/mysqld --initialize --user=mysql --basedir=/home/mysql --datadir=/home/mysql/data #這一步記住生成的密碼,一會要用 ll data/ vim /etc/my.cnf vim mysql.server cp mysql.server /etc/init.d/mysqld3306 chmod 755 /etc/init.d/mysqld3306 cd .. ll service mysqld3306 start bin/mysql -h127.0.0.1 -uroot -p
到此為止