MYSQL5.6.40主从+keepalive高可用自动切换(已完善)

来源:这里教程网 时间:2026-03-01 14:38:39 作者:

前言

之前自己写了好多主从搭建,主主搭建的总结,一直没有去写keepalived高可用的笔记总结,这次因为有一个小项目 需要搭建,就顺便写下来总结方便自己今后使用。之前直接复制了自己以前写的文章,现在重新搭建一遍,做一些修改

一、MYSQL源码安装  (两个节点都安装,步骤一样的) 

安装环境:  操作系统CENTOS 6.5

NODE1 主机名 master      IP地址 192.168.159.128

NODE2 主机名 slave       IP地址 192.168.159.129

1、安装依赖  yum -y install make gcc-c++ cmake bison-devel  ncurses-devel perl  2、创建用户和组   groupadd mysql  useradd mysql -g mysql -M -s /sbin/nologin 

这里注意如果之前创建了mysql用户且有一些参数没设置好想要重建用户的,可以用以下命令删除

userdel -r mysql

创建mysql用户时设置/sbin/nologin的好处是,不可以用该用户登录,不会有家目录

3、下载5.6.40源码包  https://downloads.mysql.com/archives/get/file/mysql-5.6.40.tar.gz  4、解压tar -zxvf mysql-5.6.40.tar.gz

cd /opt/

tar -zxvf mysql-5.6.40.tar.gz

cd  mysql-5.6.40

mkdir -p  /home/mysql_db/data

5、编译安装  cmake -DCMAKE_INSTALL_PREFIX=/opt/mysql-5.6.40/ -DMYSQL_DATADIR=/home/mysql_db/data -DSYSCONFDIR=/etc -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DMYSQL_UNIX_ADDR=/tmp/mysqld.sock -DMYSQL_TCP_PORT=3306 -DENABLED_LOCAL_INFILE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci说明:  设置安装目录  -DCMAKE_INSTALL_PREFIX= /opt/mysql-5.6.40/

数据库存放目录  -DMYSQL_DATADIR= /home/mysql_db/data

系统配置目录  -DSYSCONFDIR=/etc  安装 myisam 存储引擎

-DWITH_MYISAM_STORAGE_ENGINE=1  安装 innodb 存储引擎  -DWITH_INNOBASE_STORAGE_ENGINE=1   安装memory存储引擎  -DWITH_MEMORY_STORAGE_ENGINE=1  快捷键功能  -DWITH_READLINE=1  Unix socket文件路径  -DMYSQL_UNIX_ADDR=/tmp/mysqld.sock  MySQL 监听端口  -DMYSQL_TCP_PORT=3306  允许从本地导入数据  -DENABLED_LOCAL_INFILE=1  安装数据库分区  -DWITH_PARTITION_STORAGE_ENGINE=1   安装所有扩展字符集  -DEXTRA_CHARSETS=all  使用 utf8 字符  -DDEFAULT_CHARSET=utf8   校验字符  -DDEFAULT_COLLATION=utf8_general_ci  支持 SSL  -DWITH_SSL=yes

make && make install

6、目录授权 

chown mysql.mysql /home/mysql_db/data/     数据库安装目录

mkdir /home/mysql_db/data/log  chown mysql.mysql /home/mysql_db/data/log 7、数据库初始化  cd /opt/mysql-5.6.40/ ./scripts/mysql_install_db --user=mysql --datadir= /home/mysql_db/data/

如果遇到报错 ./scripts/mysql_install_db --user=mysql --datadir=/home/mysql_db/data/-bash: ./scripts/mysql_install_db: 权限不够

chmod u+x  mysql_install_db    就去把这个脚本赋予执行权限吧

8、配置环境变量  vi /root/.bash_profile 在最后一行添加  PATH=$PATH:$HOME/bin: /opt/mysql-5.6.40/bin: /opt/mysql-5.6.40/lib 

source 

二、MYSQL5.6.40主从搭建

1、Master端配置部署

a、在主服务器上的my.cnf配置文件中的[mysqld]节点下添加以下配置

vi /etc/my.cnf

[mysqld] server-id=101 datadir=/home/mysql_db/data/ socket=/tmp/mysqld.sock user=mysql log-bin=/home/mysql_db/data/mysql-bin.log log-bin-index=/home/mysql_db/data/mysql-bin.index expire_logs_days=30 # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 [mysqld_safe] log-error=/home/mysql_db/data/mysqld.log pid-file=/home/mysql_db/data/mysqld.pid

说明:

log-bin :给出二进制日志的所有文件基础名

log-bin-index :给出二进制日志文件的文件名,通常以000001开始,顺序递增。全名:master-bin.000001

server-id :mysql服务器唯一ID,在主从复制的所有服务器中必须唯一。

启动数据库  传统启动方式  /opt/mysql-5.6.40/bin/mysqld_safe --user=mysql &  制作成服务启动 

cp /opt/mysql-5.6.40/support-files/mysql.server /etc/init.d/mysql 查看启动是否成功 

netstat -tnl|grep 3306  ps -ef|grep mysql  相关命令  service mysql start  停止mysql服务  service mysql stop  重启mysql服务  service mysql restart   添加到开机启动项  chkconfig --add mysql 

b、创建用户,并赋予权限:

登陆数据库时报错  ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysqld.sock' (2)  ln -s /tmp/mysql.sock  /tmp/mysqld.sock 

启动MYSQL报错:Starting MySQL...The server quit without updating PID file (/home/mysql_db/data//redhat6.5.pid).[FAILED]chown -R mysql.mysql /home/mysql_db/

登陆  mysql -uroot

create user repl_user;

GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%' IDENTIFIED BY PASSWORD '******';

设置密码时会遇到报错:

ERROR 1372 (HY000): Password hash should be a 41-digit hexadecimal number

解决办法:用select password('你想输入的密码');查询出你的密码对应的字符串

select password('123456');

查出的是*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9

GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%' IDENTIFIED BY PASSWORD '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9';

2、Slave端配置部署

a、配置参数:[mysqld]

vi /etc/my.cnf[mysqld]server-id=102datadir=/home/mysql_db/data/socket=/tmp/mysqld.sockuser=mysqllog-bin=/home/mysql_db/data/mysql-relay-bin.loglog-bin-index=/home/mysql_db/data/mysql-relay-bin.indexexpire_logs_days=30# Disabling symbolic-links is recommended to prevent assorted security riskssymbolic-links=0relay_log_purge=on[mysqld_safe]log-error=/home/mysql_db/data/mysqld.logpid-file=/home/mysql_db/data/mysqld.pid

3、建立主从同步

(重建备库也是使用该方法)

建立主从同步可以从主库上导出数据,也可以从已有的从库上导出数据,然后再导入到新的从库中,change master to建立同步。

(如果是新搭建主从,可以直接按照安装主库的方法直接安装从库就可以了,都是全新的,就不需要做下面的导出和导入操作)

3.1 、导出数据

在主库上导出数据:

mysqldump -u***-p*** -h***      --default-character-set=utf8 –q --single-transaction --master-data-A >  /tmp/all_database.sql

(或者)在从库上导出数据:

mysqldump -u***-p*** -h*** --default-character-set=utf8 -q --single-transaction --dump-slave-A  >  /tmp/all_database.sql

NOTES:

--master-data和--dump-slave导出的备份中,会包含master_log_file和master_log_pos信息。

例子:

mysqldump -uroot --events --all-databases > /opt/mysql.dump

3.2、从库导入数据

mysql -u*** -p*** --default-character-set=utf8< all_database.sql

例子:

mysql -uroot -p*** <  /opt/mysql.dump

3.3、从库与主机建立同步

以下为建立主从同步最基本的6个项:change master to

master_host='xxx.xxx.xxx.xxx',    # 主库IP

master_port=3306,              # 主库mysqld的端口

master_user='repl',             # 主库中创建的有REPLICATION SLAVE权限的用户

master_password='xxxxxxxx',      # 该用户的密码

master_log_file='mysql-bin.000xxx', # 已在导入时指定了

master_log_pos=xxxxxx;       #已在导入时指定了

start slave;

例子:

master_log_file和master_log_pos通过在主库上使用命令获得:

show master status \G;

在从库上执行:

change master to

master_host='192.168.159.128',

master_port=3306,

master_user='repl_user',

master_password='123456',

master_log_file='mysql-bin.000002',

master_log_pos=415;

start slave;

验证主从是否搭建成功在从库执行  show slave status \G   在主库创建一个表  use test  create table aa (name char(10));  insert into aa values('Tom');  在从库查询  use test  select * from aa;  查到刚刚插入的数据就O了 

修改root密码

cd /usr/local/ mysql /bin

./mysqladmin -u root password

mysql> use mysql;
mysql> desc user;
mysql> GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY "root"; //授权远程连接
mysql> update user set Password = password('123456') where User='root'; //设置root用户密码
mysql> select Host,User,Password from user where User='root';
mysql> flush privileges;
mysql> exit

以上的内容其实大部分都是自己以前博客里写的,不过这次再安装的时候,又改动了一下,算是对自己的总结完善吧 三、KEEPALIVED安装安装包:keepalived-1.4.2.tar.gzlibnfnetlink-1.0.0-1.el6.x86_64.rpm libnfnetlink-devel-1.0.0-1.el6.x86_64.rpmlibnl-devel-1.1.4-2.el6.x86_64.rpm 安装包下载地址: http://www.keepalived.org/software/ keepalived-1.4.2.tar.gz https://centos.pkgs.org/6/centos-x86_64/libnfnetlink-1.0.0-1.el6.i686.rpm.html http://rpmfind.net/linux/RPM/centos/6.10/x86_64/Packages/libnfnetlink-devel-1.0.0-1.el6.x86_64.html http://rpmfind.net/linux/RPM/centos/6.10/x86_64/Packages/libnl-devel-1.1.4-2.el6.x86_64.html 安装keepalivedtar zxvf  keepalived-1.4.2.tar.gz cd  keepalived-1.4.2 ./configure 遇到以下报错  !!! OpenSSL is not properly installed on your system. !!!

  !!! Can not include OpenSSL headers files. 

解决方法:  yum -y install openssl-devel 如果./configure遇到以下报错 no acceptable C compiler found in $PATH 就要安装gcc,   yum -y install gcc make make installmkdir /etc/keepalivedcp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/cp /usr/local/sbin/keepalived /usr/sbin/ master的keepalived配置文件如下: vi /etc/keepalived/keepalived.conf global_defs {    router_id MySQL-HA vrrp_script check_run { script "/home/mysql/mysql_check.sh" interval 60 } vrrp_sync_group VG1 { group { VI_1 } } vrrp_instance VI_1 {     state BACKUP     interface eth1      virtual_router_id 51     priority 100       advert_int 1     nopreempt     authentication {         auth_type PASS         auth_pass 1234     }     track_script {     check_run     }     notify_master /home/mysql/master.sh     notify_stop /home/mysql/stop.sh     virtual_ipaddress {         192.168.159.100     } }   slave的keepalived配置文件如下: mkdir /etc/keepalivedvi /etc/keepalived/keepalived.conf global_defs {    router_id MySQL-HA vrrp_script check_run { script "/home/mysql/mysql_check.sh" interval 60 } vrrp_sync_group VG1 { group { VI_1 } } vrrp_instance VI_1 {     state BACKUP     interface eth1       virtual_router_id 51     priority 90       advert_int 1     nopreempt     authentication {         auth_type PASS         auth_pass 1234     }     track_script {     check_run     }     notify_master /home/mysql/master.sh     notify_stop /home/mysql/stop.sh     virtual_ipaddress {         192.168.159.100     } } 说明: 1、 master与slave的keepalived配置文件中只有priority设置不同,master为100,slave为90,其它一样。 配置文件是以块形式组织的,每个块都在{}包围的范围内,#和!开头的行都是注释。 2、 global_defs为全局定义,对整个Keepalived起作用,而不管是否使用LVS。 3、 router_id:运行Keepalived的机器的一个标识。 4、 vrrp_script配置业务进程监控脚本。 5、 script:设置脚本文件名。 6、 interval:设置脚本执行的时间间隔,这里为每60秒执行一次。 7、 /home/mysql/mysql_check.sh用以检测MySQL服务是否正常, 当发现连接不上mysql,自动把keepalived进程杀掉,让VIP进行漂移。文件内容如下。 这个脚本可以放在2个节点上 注意,一般情况,数据库的root用户都会设置密码,且要登陆数据库要输入密码登录,所以 下面的脚本也是要这么登陆 vi /home/mysql/mysql_check.sh #!/bin/bash . /home/mysql/.bashrc count=1 while true do mysql -uroot -p123456 -h192.168.159.128 -e "show status;" > /dev/null 2>&1 i=$? ps aux | grep mysqld | grep -v grep > /dev/null 2>&1 j=$? if [ $i = 0 ] && [ $j = 0 ] then    exit 0 else    if [ $i = 1 ] && [ $j = 0 ]    then        exit 0    else         if [ $count -gt 5 ]         then               break         fi    let count++    continue    fi fi done /etc/init.d/keepalived stop 说明: 1、 vrrp_sync_group配置VRRP同步组。 不使用Sync Group的话,如果机器有两个网段,一个内网一个外网,每个网段开启一个VRRP实例。 假设VRRP配置为检查内网,那么当外网出现问题时,VRRPD认为自己仍然健康, 那么不会触发Master和Backup的切换,从而导致问题。Sync Group解决这个问题, 可以把两个实例都放进一个Sync Group,这样的话,Sync Group里面任何一个实例出现问题都会发生切换。 2、 group:设置同一组中的VRRP实例名,这里只有一个实例VI_1。 3、 vrrp_instance配置VRRP实例。VRRP实例表示在上面开启了VRRP协议。 这个实例说明了VRRP的一些特性,比如主从、VRID等等。 可以在每个网卡上开启一个实例。VRRP实例主要定义vrrp_sync_group里面的每个组的漂移IP等。 4、 state:指定实例的初始状态。在两台路由都启动后,马上会发生竞争,高priority的会竞选为Master, 所以这里的state并不表示这台就一直是Backup。 5、 interface:实例绑定的网卡。 6、 virtual_router_id:VRID标记,值为0..255,这里使用默认的51。 7、 priority:高优先级竞选为Master,Master要高于Backup至少50。 这里MySQL主从库两个优先级分别设置为100和90,因此当Keepalived启动后,MySQL主库会被选为Master。 8、 advert_int:检查间隔,这里设置为默认的1秒。 9、 nopreempt:设置为不抢占,注意这个配置只能设置在state为BACKUP的主机上。 当MASTER出现问题后,BACKUP会竞选为新的MASTER,那么当之前的MASTER重新在线后, 是继续成为MASTER还是变成BACKUP呢?默认不设置不抢占,那么之前的MASTER起来后会继续抢占成为MASTER。 这样的频繁切换对于业务是不能容忍的,我们希望MASTER起来后成为BACKUP,所以要设置不抢占。 又因为nopreempt配置只能用在state为BACKUP的主机上,因此MASTER的state也得设置为BACKUP, 也就是说172.16.1.126和172.16.1.127都要将state设置为BACKUP。通过在两台BACKUP上面设置不同的priority, 让它们一起来就抢占,高priority的172.16.1.126成为最初的MASTER。 10、 authentication:设置认证类型和认证密码。  11、 auth_type:认证类型,支持PASS、AH两种,通常使用PASS类型。 12、 auth_pass:明文认证密码。同一VRRP实例的MASTER与BACKUP使用相同的密码才能正常通信。 13、 track_script:设置追踪脚本,这里为check_run,即调用vrrp_script中定义的脚本。  14、 notify_master:指定当切换到MASTER时执行的脚本。 15、 notify_stop:VRRP停止以后执行的脚本。 16、 virtual_ipaddress:指定漂移地址(VIP),也就是切换到MASTER时,这些IP或被添加, 切换到BACKUP时,这些IP会被删除。因此每台服务器上可以不绑定任何虚拟地址, 而都把它们放到virtual_ipaddress里面,可以都多个。Keepalived会自动使用ip addr进行绑定。 17、 /home/mysql/master.sh的作用是状态改为master以后执行的脚本。首先判断复制是否有延迟, 如果有延迟,等1分钟后,不论是否有延迟,都并停止复制,并且记录binlog和pos点。文件内容如下。 这个脚本可以放在2个节点上vi /home/mysql/master.sh #!/bin/bash . /home/mysql/.bashrc Master_Log_File=$(mysql -uroot -p123456 -h192.168.159.128 -e "show slave status\G" | grep -w Master_Log_File | awk -F": " '{print $2}') Relay_Master_Log_File=$(mysql -uroot -p123456 -h192.168.159.128 -e "show slave status\G" | grep -w Relay_Master_Log_File | awk -F": " '{print $2}') Read_Master_Log_Pos=$(mysql -uroot -p123456 -h192.168.159.128 -e "show slave status\G" | grep -w Read_Master_Log_Pos | awk -F": " '{print $2}') Exec_Master_Log_Pos=$(mysql -uroot -p123456 -h192.168.159.128 -e "show slave status\G" | grep -w Exec_Master_Log_Pos | awk -F": " '{print $2}') i=1 while true do if [ $Master_Log_File = $Relay_Master_Log_File ] && [ $Read_Master_Log_Pos -eq $Exec_Master_Log_Pos ] then    echo "ok"    break else    sleep 1    if [ $i -gt 60 ]    then       break    fi    continue    let i++ fi done mysql -uroot -p123456 -h192.168.159.128 -e "stop slave;" mysql -uroot -p123456 -h192.168.159.128 -e "reset slave all;" mysql -uroot -p123456 -h192.168.159.128 -e "reset master;" mysql -uroot -p123456 -h192.168.159.128 -e "show master status;" > /tmp/master_status_$(date "+%y%m%d-%H%M").txt /home/mysql/stop.sh表示Keepalived停止以后需要执行的脚本。 检查是否还有复制写入操作,最后无论是否执行完毕都退出。文件内容如下。 这个脚本可以放在2个节点上 vi /home/mysql/stop.sh #!/bin/bash . /home/mysql/.bashrc M_File1=$(mysql -uroot -p123456 -h192.168.159.128 -e "show master status\G" | awk -F': ' '/File/{print $2}') M_Position1=$(mysql -uroot -p123456 -h192.168.159.128 -e "show master status\G" | awk -F': ' '/Position/{print $2}') sleep 1 M_File2=$(mysql -uroot -p123456 -h192.168.159.128  "show master status\G" | awk -F': ' '/File/{print $2}') M_Position2=$(mysql -uroot -p123456 -h192.168.159.128  -e "show master status\G" | awk -F': ' '/Position/{print $2}') i=1 while true do if [ $M_File1 = $M_File2 ] && [ $M_Position1 -eq $M_Position2 ] then    echo "ok"    break else    sleep 1    if [ $i -gt 60 ]    then       break    fi    continue    let i++ fi done 上面的几个脚本搞完了,记得要chmod u+x 给一下执行权限,这个基本的要知道的哈 还有要注意的地方,如果你的是生产库,那个master脚本最后那里reset master,可以根据情况去掉,因为可能会遇到一些情况,可以保留这些binlog,确定不要了,再手动再操作系统删除也可以的。 注意要把keepalived的一些脚本拷贝一下,这样,使用命令/etc/init.d/keepalived stop才可以使用

到安装目录

cp /opt/keepalived-1.4.2/keepalived/etc/init.d/keepalived  /etc/init.d/cp /opt/keepalived-1.4.2/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

启动Keepalived  keepalived -D -f /etc/keepalived/keepalived.conf  如果要加上启动日志 keepalived -D -f /etc/keepalived/keepalived.conf --log-file='/etc/keepalived/error.log'

停止keepalived

/etc/init.d/keepalived stop

2个节点分别启动keepalived [root@mysql1 opt]# ps -ef|grep keeproot     18057     1  0 00:50 ?        00:00:00 keepalived -D -f /etc/keepalived/keepalived.confroot     18058 18057  0 00:50 ?        00:00:00 keepalived -D -f /etc/keepalived/keepalived.confroot     18059 18057  0 00:50 ?        00:00:00 keepalived -D -f /etc/keepalived/keepalived.confroot     18061 17938  0 00:50 pts/2    00:00:00 grep keep 查看vip在哪个节点上 ip addr [root@mysql1 opt]# ip addr1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00    inet 127.0.0.1/8 scope host lo    inet6 ::1/128 scope host        valid_lft forever preferred_lft forever2: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000    link/ether 00:0c:29:ea:81:9a brd ff:ff:ff:ff:ff:ff    inet 192.168.159.128/24 brd 192.168.159.255 scope global eth1    inet 192.168.159.100/32 scope global eth1    inet6 fe80::20c:29ff:feea:819a/64 scope link        valid_lft forever preferred_lft forever3: pan0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN     link/ether 16:23:b1:c1:a0:ca brd ff:ff:ff:ff:ff:ff 发现是在主节点上 这样就证明keepalived启用成功了。 测试keepalived高可用可以自动进行切换 把MYSQL主库kill或者关机停止MYSQL。 在从库ip addr发现VIP漂移到了从库上,登陆从库,进行建库,DML等操作都可以进行,那么代表自动切换成功。 下面注意了:如果你的操作系统是centos6.5 MYSQL是5.6.40版本的且,如果你的系统开启了iptables防火墙规则的,那么防火墙规则一定要注意按下面的方法写vi /etc/sysconfig/iptables-A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 112 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited  放通的端口必须在 -A INPUT -j REJECT --reject-with icmp-host-prohibited 这一行的上面, 3306是mysql的 112是keepalived的 如果不这么做,那么你的主从是不同步的,会有一下报错(只贴出关键处)             Slave_IO_Running: Connecting            Slave_SQL_Running: Yes...                Last_IO_Errno: 2003                Last_IO_Error: error connecting to master 'repl_user@10.1.8.111:3306' - retry-time: 60  retries: 1 防火墙相关知识添加防火墙规则 iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPTiptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 112 -j ACCEPT-A INPUT -i eth0 -p vrrp -d 224.0.0.0/8 -j ACCEPT-A OUTPUT -o eth0 -p vrrp -d 224.0.0.0/8 -j ACCEPT注意了,这个vrrp是给keepalived通信的,所以一定要放通或者是直接在配置文件中添加(直接添加配置文件就不需要执行 /etc/rc.d/init.d/iptables save)vi /etc/sysconfig/iptables注意:增加的开放3306端口的语句一定要在icmp-host-prohibited之前保存规则/etc/rc.d/init.d/iptables save重启防火墙使配置生效service iptables restart 可能存在的版本问题报错:在CENTOS7.5安装MYSQL5.6cmake的时候报错:(在CENTOS6.5安装MYSQL5.6不会这样报错) -- Performing Test HAVE_WVLA - Success CMake Error at CMakeLists.txt:487 (ADD_SUBDIRECTORY):   add_subdirectory given source "strings" which is not an existing directory. CMake Error at CMakeLists.txt:488 (ADD_SUBDIRECTORY):   add_subdirectory given source "vio" which is not an existing directory. -- Library mysqlclient depends on OSLIBS -lpthread;mysys;strings;vio;mysys_ssl;zlib;dl CMake Error at CMakeLists.txt:503 (ADD_SUBDIRECTORY):   add_subdirectory given source "unittest" which is not an existing   directory. CMake Error at CMakeLists.txt:504 (ADD_SUBDIRECTORY):   add_subdirectory given source "unittest/examples" which is not an existing   directory. CMake Error at CMakeLists.txt:505 (ADD_SUBDIRECTORY):   add_subdirectory given source "unittest/mytap" which is not an existing   directory. CMake Error at CMakeLists.txt:506 (ADD_SUBDIRECTORY):   add_subdirectory given source "unittest/mytap/t" which is not an existing   directory. CMake Error at CMakeLists.txt:519 (ADD_SUBDIRECTORY):   add_subdirectory given source "tests" which is not an existing directory. -- Library mysqlserver depends on OSLIBS -lpthread;mysys;strings;regex;mysys_ssl;vio;zlib;crypt;dl CMake Error at CMakeLists.txt:535 (ADD_SUBDIRECTORY):   add_subdirectory given source "support-files" which is not an existing   directory. -- CMAKE_BUILD_TYPE: RelWithDebInfo -- COMPILE_DEFINITIONS: HAVE_CONFIG_H -- CMAKE_C_FLAGS:  -Wall -Wextra -Wformat-security -Wvla -Wwrite-strings -Wdeclaration-after-statement -- CMAKE_CXX_FLAGS:  -Wall -Wextra -Wformat-security -Wvla -Woverloaded-virtual -Wno-unused-parameter -- CMAKE_C_FLAGS_RELWITHDEBINFO: -O3 -g -fabi-version=2 -fno-omit-frame-pointer -fno-strict-aliasing -DDBUG_OFF -- CMAKE_CXX_FLAGS_RELWITHDEBINFO: -O3 -g -fabi-version=2 -fno-omit-frame-pointer -fno-strict-aliasing -DDBUG_OFF -- Configuring incomplete, errors occurred! See also "/u01/mysql5.6.40/CMakeFiles/CMakeOutput.log". See also "/u01/mysql5.6.40/CMakeFiles/CMakeError.log". 

相关推荐