目标:虚拟机中ubuntu20.04使用virtio-9p文件系统存储作为mysql 的datadir存储
系统版本:
# cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.4 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.4 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal
内核版本:
Linux version 5.4.181
mysql版本:
mysql> select version();
+--------------+
| version() |
+--------------+
| 8.0.29-debug |
+--------------+
1 row in set (0.00 sec)
Virtio-9p配置
在这里我选择方法一virt-manager配置
方法一:Virt-manager配置
方法二:Xml配置
<filesystem type='mount' accessmode='mapped'>
<source dir='/data/wy/share9p'/>
<target dir='hostfiles'/>
<alias name='fs0'/>
<address type='pci' domain='0x0000' bus='0x06' slot='0x00' function='0x0'/>
</filesystem>
方法三:Qemu命令行
-fsdev local,security_model=mapped,id=fsdev-fs0,path=/data/wy/share9p -device virtio-9p-pci,id=fs0,fsdev=fsdev-fs0,mount_tag=hostfiles,bus=pci.6,addr=0x0
源码下载
修改/etc/apt/sources.list deb-src
$ diff -Nruap /etc/apt/sources.list-bak /etc/apt/sources.list
--- /etc/apt/sources.list-bak 2022-05-30 02:32:13.090055789 +0000
+++ /etc/apt/sources.list 2022-05-30 02:32:27.634511064 +0000
@@ -42,8 +42,8 @@ deb http://cn.archive.ubuntu.com/ubuntu
# deb-src http://archive.canonical.com/ubuntu focal partner
deb http://cn.archive.ubuntu.com/ubuntu focal-security main restricted
-# deb-src http://cn.archive.ubuntu.com/ubuntu focal-security main restricted
+deb-src http://cn.archive.ubuntu.com/ubuntu focal-security main restricted
deb http://cn.archive.ubuntu.com/ubuntu focal-security universe
-# deb-src http://cn.archive.ubuntu.com/ubuntu focal-security universe
+deb-src http://cn.archive.ubuntu.com/ubuntu focal-security universe
deb http://cn.archive.ubuntu.com/ubuntu focal-security multiverse
-# deb-src http://cn.archive.ubuntu.com/ubuntu focal-security multiverse
+deb-src http://cn.archive.ubuntu.com/ubuntu focal-security multiverse
执行命令 apt update
$ sudo apt-get source mysql-server
$ ls
mysql-8.0_8.0.29-0ubuntu0.20.04.3.dsc
mysql-8.0_8.0.29-0ubuntu0.20.04.3.debian.tar.xz mysql-8.0_8.0.29.orig.tar.gz
在这里我自己选择的是编译方法二
编译方法一:
- 装编译依赖
sudo apt-get build-dep mysql-server
- deb源码包由以下文件组成
由3个文件组成:.debian.tar.xz 文件 .dsc文件和.tar.gz文件。得到这三个文件之后,
执行命令dpkg-source -x xxx.dsc ,可生成源码目录
xz -d xx.debian.tar.xz 生成xx.debian.tar,tar -xvf xx.debian.tar可生成补丁文件,路径为:debian/patches/
3、编译包:
dpkg-buildpackage -us -uc // dpkg-buildpackage -b -rfakeroot -us -uc
4、安装包:
dpkg -i 包名.deb
编译方法二:这是我选择的方法
1、装编译依赖
sudo apt-get build-dep mysql-server
2、deb源码包由以下文件组成
由3个文件组成:.debian.tar.xz 文件 .dsc文件和.tar.gz文件。得到这三个文件之后,
执行命令dpkg-source -x xxx.dsc ,可生成源码目录,在这里会打上patch
xz -d xx.debian.tar.xz 生成xx.debian.tar,tar -xvf xx.debian.tar可生成补丁文件,路径为:debian/patches/
3、cmake做配置
Mkdir build-out
普通文件系统做后端 datadir
mysql-8.0-8.0.29# cmake -B build-out -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DWITH_BOOST=boost -DFORCE_INSOURCE_BUILD=ON
编译9p文件系统做存储后端
cmake -B build-out -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/9pdata/data -DWITH_BOOST=boost -DFORCE_INSOURCE_BUILD=ON -DWITH_DEBUG=1
Make -j8
Make install
Datadir普通文件系统类型
Mysql初始化方式:
$> make install # End of source-build specific instructions
# Postinstallation setup
$> cd /usr/local/mysql
$> mkdir mysql-files
$> chown mysql:mysql mysql-files
$> chmod 750 mysql-files
$> bin/mysqld --initialize --user=mysql
$> bin/mysql_ssl_rsa_setup
$> bin/mysqld_safe --user=mysql & # Next command is optional
$> cp support-files/mysql.server /etc/init.d/mysql
要执行systemctl y:~# systemctl daemon-reload
MySQL :: MySQL 8.0 Reference Manual :: 2.9.4 Installing MySQL Using a Standard Source Distribution
启动之后可以使用systemctl start mysql
查看mysql进程
root@wy:~# ps aux|grep mysqld
root 248495 0.0 0.0 2608 1680 pts/0 S 02:38 0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --user=mysql
mysql 248564 24.0 3.4 3625436 569420 pts/0 Sl 02:38 10:45 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=wy.err --pid-file=wy.pid
root 248820 0.0 0.0 6432 724 pts/1 S+ 03:22 0:00 grep --color=auto mysqld
查看virtio-9p作为存储后端的mysql进程
Virtio-9p作为后端存储
dpkg说明_linbounconstraint的博客-CSDN博客_dpkg-source
Mysql-8.0.29-源码编译安装_阳光九叶草LXGZXJ的博客-CSDN博客
mysql-server/Docs at 8.0 · mysql/mysql-server · GitHub
MySQL :: MySQL 8.0 Reference Manual :: 2.9.4 Installing MySQL Using a Standard Source Distribution