分类 技术分享 下的文章

我另外一个wordpress博客突然连接不上数据库了,登录数据库发现所有的表都不见了,好在mysql保存数据库的frm和ibd格式的文件都在。
恢复数据需要创建一个表名和结构与丢失数据一样的数据库(在另外一个数据库重新安装一遍即可)
丢弃新建表的表空间

ALTER TABLE wp_commentmeta DISCARD TABLESPACE;
ALTER TABLE wp_comments DISCARD TABLESPACE;
ALTER TABLE wp_links DISCARD TABLESPACE;
ALTER TABLE wp_options DISCARD TABLESPACE;
ALTER TABLE wp_postmeta DISCARD TABLESPACE;
ALTER TABLE wp_posts DISCARD TABLESPACE;
ALTER TABLE wp_terms DISCARD TABLESPACE;
ALTER TABLE wp_termmeta DISCARD TABLESPACE;
ALTER TABLE wp_term_relationships DISCARD TABLESPACE;
ALTER TABLE wp_term_taxonomy DISCARD TABLESPACE;
ALTER TABLE wp_usermeta DISCARD TABLESPACE;
ALTER TABLE wp_users DISCARD TABLESPACE;

将原始 .ibd 文件复制到新建数据库目录
导入表空间

ALTER TABLE wp_commentmeta IMPORT TABLESPACE;
ALTER TABLE wp_comments IMPORT TABLESPACE;
ALTER TABLE wp_links IMPORT TABLESPACE;
ALTER TABLE wp_options IMPORT TABLESPACE;
ALTER TABLE wp_postmeta IMPORT TABLESPACE;
ALTER TABLE wp_posts IMPORT TABLESPACE;
ALTER TABLE wp_terms IMPORT TABLESPACE;
ALTER TABLE wp_termmeta IMPORT TABLESPACE;
ALTER TABLE wp_term_relationships IMPORT TABLESPACE;
ALTER TABLE wp_term_taxonomy IMPORT TABLESPACE;
ALTER TABLE wp_usermeta IMPORT TABLESPACE;
ALTER TABLE wp_users IMPORT TABLESPACE;

大功告成,最后你会发现新建的数据库与丢失的数据库内容一模一样。注意:丢失数据库版本与新建数据库mysql版本要一模一样否则会出现一些问题

安装Docker(若已安装可跳过)

curl -sSL https://get.docker.com | bash

拉取aaPanel镜像

docker pull aapanel/aapanel:latest

运行aaPanel容器

docker run -d \
  --name=aapanel \
  --restart=always \
  --device=/dev/net/tun \
  -p 8888:7800 -p 80:80 -p 443:443 -p 3306:3306 \
  -v ~/website_data:/www/wwwroot \
  -v ~/mysql_data:/www/server/data \
  -v ~/vhost:/www/server/panel/vhost \
  aapanel/aapanel:latest

进入aapanel容器内部

docker exec -it aapanel /bin/bash

进入内部后输入bt命令后输入数字5最后输入你想修改的密码即可
浏览器打开 http://你的服务器IP:8888/aapanel
输入账号aapanel和你设置的密码即可登录

安装npd6

apk add npd6

配置npd6,记得替换为你的实际子网和接口:

cat > /etc/npd6.conf <<EOF
interface=eth0
prefix=2001:db8:1234:64::/64
ralogging=off
listtype=none
listlogging=off
collectTargets=100
linkOption=false
ignoreLocal=true
routerNA=true
maxHops=255
pollErrorLimit=20
EOF

启动服务

rc-update add npd6

service npd6 start

在 Alpine Linux 中,ndppd 需要从源代码编译,因为官方存储库不包含预编译的 ndppd 包。以下是安装步骤:
1.安装编译工具和依赖:

apk add build-base git musl-dev linux-headers

2.克隆 ndppd 源代码:

git clone https://github.com/hugangba/alpine-ndppd.git
cd ndppd

3.编译并安装:

make all && make install

验证安装:

which ndppd

应该返回类似 /usr/sbin/ndppd 的路径。
创建配置文件:
创建 /etc/ndppd.conf 文件并添加以下内容,替换为你的实际子网和接口:

route-ttl 30000
address-ttl 30000

proxy eth0 {
    router yes
    timeout 500
    autowire no
    keepalive yes
    retries 3
    promiscuous no
    ttl 30000

    rule 2001:db8:1234:64:ff9b::/96 {
        static
        autovia no
    }
}

启动 ndppd 服务:

ndppd -d -c /etc/ndppd.conf

如果返回以下代码说明ndppd启动成功
(notice) ndppd (NDP Proxy Daemon) version 0.2.5
(notice) Using configuration file '/etc/ndppd.conf'
(warning) Low prefix length (64 <= 120) when using 'static' method
将 ndppd 添加到系统启动,创建服务文件以确保开机启动:

cat <<EOF > /etc/init.d/ndppd
#!/sbin/openrc-run

description="NDP Proxy Daemon"
command="/usr/local/sbin/ndppd"
command_args="-d -c /etc/ndppd.conf"
pidfile="/var/run/ndppd.pid"

depend() {
    need net
    after firewall
}
EOF

赋予执行权限并启用服务:

chmod +x /etc/init.d/ndppd
rc-update add ndppd default
rc-service ndppd start

以下是彻底卸载 ndppd 的步骤

rc-service ndppd stop
rc-update del ndppd default
rm /etc/init.d/ndppd
rm /usr/local/sbin/ndppd
rm /etc/ndppd.conf