Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

安装

  • MySQL gcc13 编译成功
  • MySQL 当前最高只支持 gcc11
    • 后续使用高版本gcc编译,测试性能,当前已经是gcc15
    • 需要解决一些编码错误
    • 在编译 release 的时候,需要把 CPPFLAGS 去掉

mysql配置文件

有些配置只能在初始化的时候配置,一旦配置完成之后,就不能再修改了,所以需要预先确定自己的参数配置

名字为 my.cnf ,可以存在在多个位置,按照优先级读取,按照sever和client进行分组设置,分组的名字是启动的程序名字,例如 mysqld, mysqladmin, mysqldump 等。 此外还有两个独立的分组 server 和 clint 单独表述服务端和客户端

  • server 的启动文件是 mysqld,所有直接或间接调用 mysqld 的程序都会调用其配置文件

  • client 的启动文件是 mysql,mysqladmin, mysqldump 等,这些程序会读取 client 配置文件

  • 具体的程序和实现有关,有些程序是脚本,而有的是单独的程序

  • 相同的配置项以出现在最后的选项为主


# /etc/my.cnf
[mysqld]
lower_case_table_names=1
#performance_schema=off
log-error=/tmp/logerror.log
general_log=on
general_log_file=/tmp/mysqllog.log
slow_query_log = on
log-queries-not-using-indexes=on
slow-query-log-file=/tmp/mysqlslow.log
long_query_time=20

编译安装

docker 安装

docker run  -itd  --name mdev --hostname vscode --cap-add=SYS_PTRACE --privileged=true \
--mount type=bind,source=/home/asky/.mdep/boost_1_77_0,target=/home/vscode/.mdep/boost_1_77_0 \
 --shm-size 32G dev  bash


docker exec -it -u vscode mdev bash

docker cp /home/asky/percona_8032  mdev:/home/vscode
sudo chown -R vscode:vscode percona_8032


alias dev_msql='docker exec -it -u vscode mdev zsh'
alias stop_msql='docker stop mdev'
alias start_msql='docker start mdev' 


sudo apt install g++-11 gcc-11 gdb cmake git vim clangd
sudo apt-get install -y ninja-build libnuma-dev libcurl4-openssl-dev
sudo apt-get install -y libncurses5-dev pkg-config libreadline-dev
sudo apt install libtirpc-dev libpam-dev bison flex zsh

sudo apt update
sudo apt-get -y install git vim gcc-15 g++-15 
sudo apt-get -y install ninja-build
sudo apt-get install libedit-dev
sudo apt-get install liblz4-dev
sudo apt-get install libicu-dev
sudo apt-get install libprotobuf-dev
sudo apt-get install protobuf-compiler
sudo apt-get install libprotobuf-dev
sudo apt-get install protobuf-compiler
sudo apt-get install protobuf-c-compiler
sudo apt-get install libprotobuf-c-dev
sudo apt-get install libprotoc-dev
sudo apt-get install libtirpc-dev
sudo apt-get install zsh
sudo apt-get install curl flex bison g++ gcc gdb make libzstd-dev libxml2-dev libcurl4-openssl-dev vim libbz2-dev \
libperl-dev software-properties-common      pkg-config libreadline-dev python3-dev libldap-dev zlib1g-dev \
openssh-server iputils-ping libxslt-dev libpam-dev libssl-dev libreadline6-dev libssh2-1-dev cmake ninja-build sudo locales

# sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 110

# sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-11 110


cmake -DCMAKE_BUILD_TYPE:STRING=Debug \
  -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE \
  -DWITH_TURBO_MTR_TEST=OFF \
  -DWITH_TURBO=ON \
  -DWITH_QUERY_PLAN_PLUGIN=ON \
  -DFEATURE_SET=community \
  -DWITH_PAM=ON \
  -DWITH_ROCKSDB=OFF \
  -DWITH_TOKUDB=OFF \
  -DGROUP_REPLICATION_WITH_ROCKSDB=OFF \
  -DWITH_KEYRING_VAULT=OFF \
  -DWITH_INNODB_MEMCACHED=ON \
  -DWITH_ZLIB=bundled \
  -DWITH_NUMA=ON \
  -DWITH_LIBEVENT=bundled \
  -DWITH_SSL=system \
  -DWITH_AUTHENTICATION_LDAP=OFF \
  -DDOWNLOAD_BOOST=0 \
  -DWITH_BOOST=/home/vscode/.mdep/boost_1_77_0 \
  -DWITH_LICENSE=ON \
  -DWITH_DBLINK=0 \
  -DCMAKE_C_COMPILER=/usr/bin/gcc-11 \
  -DCMAKE_CXX_COMPILER=/usr/bin/g++-11 \
  -DCMAKE_POLICY_VERSION_MINIMUM=3.5 \
  -DINSTALL_MYSQLTESTDIR=0 \
  -DCMAKE_INSTALL_PREFIX=/home/vscode/.grdb \
  --no-warn-unused-cli \
  -S/home/vscode/percona \
  -B/home/vscode/percona/build/debug \
  -G Ninja


export PATH=/home/vscode/.percona/bin:$PATH
export LD_LIBRARY_PATH=/home/vscode/.percona/lib:$LD_LIBRARY_PATH
alias imysql='mysql -u root'
alias mstart='/home/vscode/.percona/support-files/mysql.server start --skip-grant-tables'
alias mstop='/home/vscode/.percona/support-files/mysql.server stop'


  • MySQL 使用 cmake 管理项目
  • MySQL 源码中 test 占据非常大的一部分,在build和安装中,会有多分拷贝
    • INSTALL_MYSQLTESTDIR 不安转 test。开发中,test 可以直接在 build 目录下测试
  1. 下载boost依赖
git clone http://gitlab.greatopensource.com/deps/boost_1_77_0.git
  1. 拉取依赖
   git submodule
   git submodule sync --recursive
   git submodule update --init --recursive
  1. 编译安装及环境配置 这里使用的是 vscode 开发,所以一些vscode配置如下,包括安装位置,clangd配置,项目文件夹可见性配置
{
  "clangd.arguments": [
    "--compile-commands-dir=build/debug",
    "--all-scopes-completion",
    "--completion-style=bundled",
    "--cross-file-rename",
    "--header-insertion=iwyu",
    "--header-insertion-decorators",
    //"--background-index",
    "--clang-tidy",
    "--clang-tidy-checks=cppcoreguidelines-*,performance-*,bugprone-*,portability-*,modernize-*,google-*",
    "-j=6",
    "--pch-storage=disk",
    "--function-arg-placeholders=false",
  ],
  //  cmake -DCMAKE_BUILD_TYPE:STRING=Debug -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE -DWITH_TURBO_MTR_TEST=OFF -DWITH_TURBO=ON -DWITH_QUERY_PLAN_PLUGIN=ON -DCMAKE_INSTALL_PREFIX=/home/asky/.grdb -DFEATURE_SET=community -DWITH_PAM=ON -DWITH_ROCKSDB=OFF -DWITH_TOKUDB=OFF -DGROUP_REPLICATION_WITH_ROCKSDB=OFF -DWITH_KEYRING_VAULT=OFF -DWITH_INNODB_MEMCACHED=ON -DWITH_ZLIB=bundled -DWITH_NUMA=ON -DWITH_LIBEVENT=bundled -DWITH_SSL=system -DWITH_AUTHENTICATION_LDAP=OFF -DDOWNLOAD_BOOST=0 -DWITH_BOOST=/home/asky/.mdep/boost_1_77_0 -DWITH_LICENSE=ON -DWITH_DBLINK=0 -DCMAKE_EXPORT_COMPILE_COMMANDS=True -DCMAKE_C_COMPILER=/usr/bin/gcc-11 -DCMAKE_CXX_COMPILER=/usr/bin/g++-11 -DCMAKE_POLICY_VERSION_MINIMUM=3.5 --no-warn-unused-cli -S/home/asky/percona-server -B/home/asky/percona-server/build/debug -G Ninja
  "cmake.configureArgs": [
    // "-DCMAKE_BUILD_TYPE=RelWithDebInfo",
    // "-DBUILD_CONFIG=mysql_release",
    "-DWITH_TURBO_MTR_TEST=OFF",
    "-DWITH_TURBO=ON",
    "-DWITH_QUERY_PLAN_PLUGIN=ON",
    "-DCMAKE_INSTALL_PREFIX=/home/asky/.grdb",
    "-DFEATURE_SET=community",
    "-DWITH_PAM=ON",
    "-DWITH_ROCKSDB=OFF",
    "-DWITH_TOKUDB=OFF",
    "-DGROUP_REPLICATION_WITH_ROCKSDB=OFF",
    "-DWITH_KEYRING_VAULT=OFF",
    "-DWITH_INNODB_MEMCACHED=ON",
    "-DWITH_ZLIB=bundled",
    "-DWITH_NUMA=ON",
    "-DWITH_LIBEVENT=bundled",
    "-DWITH_SSL=system",
    "-DWITH_AUTHENTICATION_LDAP=OFF",
    "-DDOWNLOAD_BOOST=0",
    "-DWITH_BOOST=/home/asky/.mdep/boost_1_77_0",
    "-DWITH_LICENSE=ON",
    "-DWITH_DBLINK=0",
    "-DCMAKE_EXPORT_COMPILE_COMMANDS=True",
    "-DCMAKE_C_COMPILER=/usr/bin/gcc-11",
    "-DCMAKE_CXX_COMPILER=/usr/bin/g++-11",
    "-DCMAKE_POLICY_VERSION_MINIMUM=3.5"
  ],
  "cmake.buildDirectory": "${workspaceFolder}/build/debug",
  "files.exclude": {
    "**/extra": true,
    "boost_1_77_0": true
  },
  "files.watcherExclude": {
    "**/extra": true,
    "boost_1_77_0": true
  },
  "explorer.autoRevealExclude": {
    "**/extra": true,
    "boost_1_77_0": true
  },
  "search.exclude": {
    "**/extra": true,
    "boost_1_77_0": true
  },
  "cmake.automaticReconfigure": false,
  "cmake.autoSelectActiveFolder": false,
  "cmake.configureOnEdit": false,
  "cmake.configureOnOpen": false,
}

  1. 配置环境变量
export PATH=/home/asky/.percona/bin:$PATH
export LD_LIBRARY_PATH=/home/asky/.percona/lib:$LD_LIBRARY_PATH
alias imysql='mysql -u root'
alias mstart='/home/asky/.percona/support-files/mysql.server start --skip-grant-tables'
alias mstop='/home/asky/.percona/support-files/mysql.server stop'
  1. 测试
 // test
 cd mysql-test
 ./mtr --force \
        --max-save-core=0 \
        --max-save-datadir=0 \
        --max-test-fail=0 \
        --verbose-restart \
        --retry=0 \
        --big-test \
        --testcase-timeout=120 \
        --suite-timeout=6000 \
        --mysqld=--synonym-translation-enabled=on \
        --debug-server \
        --parallel=50 \
        --suite=main,sys_vars,ora_compat,awr,innodb,mac,system_role \
        --skip-test-list=skip_err_test_list_for_mtrdebug
        
  1. 启动mysql
mysqld --initialize
mstart
imysql
mstop


// 如果需要修改密码,
    alter user 'root'@'localhost' identified by  '123456';
mysqld &
mysql -u root -p