leadscloud

Google SEO|外贸营销推广

lnmp centos下mysql迁移数据目录到新硬盘

centos 硬盘分区

电脑中已经挂载了一个1T的新硬盘,最初安装centos系统时原先的nfts硬盘 sdb

lsblk

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
NAME                                          MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda 8:0 0 223.6G 0 disk
├─sda1 8:1 0 200M 0 part /boot/efi
├─sda2 8:2 0 1G 0 part /boot
└─sda3 8:3 0 222.4G 0 part
└─luks-61af80c4-4d0a-4312-aae1-b66abd729eb5 253:0 0 222.4G 0 crypt
├─centos-root 253:1 0 185G 0 lvm /
├─centos-swap 253:2 0 7.8G 0 lvm [SWAP]
└─centos-home 253:3 0 29.6G 0 lvm /home
sdb 8:16 0 931.5G 0 disk
├─sdb1 8:17 0 529M 0 part
├─sdb2 8:18 0 100M 0 part
├─sdb3 8:19 0 16M 0 part
├─sdb4 8:20 0 130.1G 0 part
├─sdb5 8:21 0 214.9G 0 part
├─sdb6 8:22 0 293G 0 part
└─sdb7 8:23 0 293G 0 part
sdc 8:32 1 14.6G 0 disk
└─sdc1 8:33 1 14.6G 0 part

fdisk -l

1
2
3
4
5
6
7
8
9
10
Disk /dev/sdb: 1000.2 GB, 1000204886016 bytes, 1953525168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk label type: dos
Disk identifier: 0x56c6d4e4

Device Boot Start End Blocks Id System
/dev/sdb1 1 4294967295 2147483647+ ee GPT
Partition 1 does not start on physical sector boundary.

创建分区

需要重新创建分区,把原先的分区重新分配

1
2
3
4
# parted /dev/sdb
(parted) mktable gpt
(parted) mkpart data 1024KiB -1
(parted print)

parted之后的参数是设备名。mkpart命令的三个参数分别是分区名(随便起),开始地址,结束地址-1表示至结尾,前面留出的空间可能是用于存放分区信息,不留的时候会有警告。print查看分区结果

格式化分区

mkfs.ext4 /dev/sdb1

mkfs.xfs /dev/sdb1

设置开机挂载

mkdir /data
mount /dev/sdb1 /data

修改/etc/fstab文件,在末尾加上一行:

/dev/sdb1 /data xfs defaults 0 0

迁移mysql数据库

先关闭mysql

/etc/init.d/mariadb stop

创建文件夹

mkdir /data/mysql/

复制datadir到新文件夹中

cp -a /usr/local/mariadb/var /data/mysql/

备份原数据目录

mv var var.bak

添加软链接

ln -s /data/mysql/var/ /usr/local/mariadb/

重启mysql即可

/etc/init.d/mariadb start

df -h 查看磁盘还有空间,但无法创建任何文件,提示磁盘空间已满(No space left on device)。

1
2
3
4
5
6
7
8
9
[root@centos-fra ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 17M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/vda1 80G 73G 7.1G 92% /
tmpfs 379M 0 379M 0% /run/user/0
/dev/sda 100G 26G 69G 28% /mnt/volume_fra1_01

最终发现下面的解决办法。

df -i 查看下索引节点(inode),会发现已经用满(IUsed=100%)。
这会导致无法创建文件和目录,并且提示 No space left on device

1
2
3
4
5
6
7
8
9
10
[root@centos-fra ~]# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
devtmpfs 479052 312 478740 1% /dev
tmpfs 485037 1 485036 1% /dev/shm
tmpfs 485037 464 484573 1% /run
tmpfs 485037 16 485021 1% /sys/fs/cgroup
/dev/vda1 22168424 6377093 15791331 29% /
tmpfs 485037 1 485036 1% /run/user/0
/dev/sda 3276800 3276800 0 100% /mnt/volume_fra1_01

原因

cache目录中存在数量非常多的小字节缓存文件,占用的Block不多,但是占用了大量的inode。

linux里每个文件都有些元信息像创建时间,文件大小,文件名啊之类的,这些元信息就存在inode了。这样如果小文件过多的话,可能磁盘没满但inode空间已分配完,这时磁盘就跟满了一样无法写入.

解决办法

挂载之前 使用下面命令增大inode数量,如果已经挂载,需要先卸载。
但执行下面的命令后,磁盘相当于重新格式化,之前的数据就消失了。

1
mkfs.ext4 -N 20000000 /dev/path/to/volume

还有一个解决办法:

用软连接将空闲分区/home/wwwroot/中的newcache目录连接到/mnt/volume_fra1_01/.cache,使用/home分区的inode来缓解/mnt分区inode不足的问题:

参考文章

DigitalOcean浮动IP是可以分配给您的某个Droplet的可公开访问的静态IP地址.

由于工作需要,需要给VPS绑定一个新的IP,并且要求请求特定IP时,使用新IP的接口。

使用方法:

1
2
3
4
5
# 查看下你的浮云IP是设置成功
curl http://169.254.169.254/metadata/v1/floating_ip/ipv4/active

# 查看浮云IP对应的网关
curl http://169.254.169.254/metadata/v1/interfaces/public/0/anchor_ipv4/gateway

得到网关地址为 10.13.0.1

在路由中添加新路由

1
ip route add 10.0.1.3 via 10.13.0.1 dev eth0

这样访问10.0.1.3时,就会使用新ip的网关口请求了。

参考文章:

删除30天前的文件

你可以使用find命令搜索X天前的文件,前根据需要删除它

先列出 /home/wwwroot/db 下面30天前的文件

1
find /home/wwwroot/db -type f -mtime +30

检查列出的文件列表,如果没有问题,使用下面的命令删除它

1
find /opt/backup -type f -mtime +30 -exec rm -f {} \; 

根据文件后缀删除文件

你也可以增加过滤条件,只删除某一类型的文件。

比如删除.log后缀的30天前的日志文件

1
find /var/log -name "*.log" -type f -mtime +30 

同样,检查下列出的日志是否正确,然后再使用下面命令删除它

1
find /var/log -name "*.log" -type f -mtime +30 -exec rm -f {} \; 

这是一个MacOS的bug,发生的情况非常普遍。

一个可能的解决方案

kextstat | grep -v com.apple

1
2
Index Refs Address Size Wired Name (Version) UUID <Linked Against>
116 0 0xffffff7f83ee4000 0x42000 0x42000 com.paragon-software.filesystems.ntfs (66.5.15) 43B8E60C-1D4C-37A1-A831-0ECF23B29456 <8 6 5 1>

卸载它

sudo kextunload -b com.paragon-software.filesystems.ntfs

1
2
kextstat | grep -v com.apple
Index Refs Address Size Wired Name (Version) UUID <Linked Against>

通过修改文件 /etc/resolv.conf 就可以修改dns

1
2
3
# Use Google's public DNS servers.
nameserver 8.8.4.4
nameserver 8.8.8.8

但是以上方法只是临时有效,服务器重启后就恢复原样了,还是变成下面这样

1
2
nameserver 127.0.0.53
search Home

怎么样才可以永久修改呢?

  1. 安装 resolvconf .

sudo apt install resolvconf

  1. 编辑 /etc/resolvconf/resolv.conf.d/head 添加以下内容:
1
2
3
4
# Make edits to /etc/resolvconf/resolv.conf.d/head.
nameserver 8.8.4.4
nameserver 8.8.8.8
Restart the resolvconf service.
  1. 重启服务

sudo service resolvconf restart

Ubuntu 18.04 下面 修改ip及dns使用netplan

显示ip信息

ip addr show

显示路由信息

ip route show

编辑网络信息

vi /etc/netplan/*.yaml

1
2
3
4
5
6
7
8
9
10
network:
ethernets:
eno1:
addresses: [192.168.1.13/24]
gateway4: 192.168.1.1
dhcp4: true
optional: true
nameservers:
addresses: [8.8.8.8,8.8.4.4]
version: 2

应用配置:

netplan apply

错误详情,lnmp下无法远程连接mysql

ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.1.49' (60)

如果设置好mysql的远程连接后,仍然出现上面的问题一般是因为防火墙规则的问题。

查看iptables规则

sudo iptables -L

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp dpt:http
ACCEPT tcp -- localhost anywhere tcp dpt:mysql
DROP tcp -- anywhere anywhere tcp dpt:mysql
ACCEPT tcp -- anywhere anywhere tcp dpt:mysql
ACCEPT tcp -- 192.168.1.0/24 anywhere tcp dpt:mysql

Chain FORWARD (policy ACCEPT)
target prot opt source destination
DOCKER all -- anywhere anywhere
ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

Chain DOCKER (1 references)
target prot opt source destination

注意上面多了一条

DROP tcp -- anywhere anywhere tcp dpt:mysql

mysql的远程连接被禁用了

使用下面命令显示规则的序号

sudo iptables -L -n --line-number

使用下面命令可以删除相应的规则

sudo optables -D INPUT 6

之后mysql连接就没问题了

下次重启规则还是会生效的,使用下面命令永久保存规则

sudo iptables-save

上面的保存还是不行,使用下面的命令永久保存。

如果没有安装iptables-persistent,先安装它

sudo apt-get install iptables-persistent

保存命令:

1
2
sudo netfilter-persistent save
sudo netfilter-persistent reload

开机后会一直卡在这个界面

1
Cloud-init v. 18.4-0ubuntu1~18.04.1 running 'modules:config' at Fri, 24 Jul 2020 

single模式进入ubuntu

  1. 开机时长按Shift

  2. 出现grub选项,选中ubuntu

  3. 长按e

  4. 找到类似下面的代码

1
2
3
linux /boot/vmlinuz-3.2.0-24-generic root=UUID=bc6f8146-1523-46a6-8b\
6a-64b819ccf2b7 ro quiet splash
initrd /boot/initrd.img-3.2.0-24-generic
  1. ro quiet splash 这后面,加上 single

  2. Ctrl+xF0 进入系统

参考: https://askubuntu.com/questions/132965/how-do-i-boot-into-single-user-mode-from-grub

Ubuntu的网卡设置

sudo vim /etc/netplan/50-cloud-init.yam

1
2
3
4
5
6
7
8
9
10
# This file is generated from information provided by
# the datasource. Changes to it will not persist across an instance.
# To disable cloud-init's network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
ethernets:
enp3s0:
dhcp4: true
version: 2

enp3s0 如果错了,改下,我的是因为硬盘换了另一台电脑,有变化,导致ip获取失败。

ifconfig -a 可以显示所有网卡。

设置静态ip

1
2
3
4
5
6
7
8
9
10
network:
ethernets:
enp3s0: # 配置的网卡名称
dhcp4: no # 关闭dhcp4
dhcp6: no # 关闭dhcp6
addresses: [192.168.0.120/24] # 设置本机IP地址及掩码
gateway4: 192.168.0.1 # 设置网关
nameservers:
addresses: [114.114.114.114, 8.8.8.8] # 设置DNS
version: 2

配置完成后,保存并退出,执行 netplan apply 命令可以让配置直接生效

ifconfig -a 可以看下是否成功

重新启停以太网卡命令:

ifconfig enp3s0 down

ifconfig enp3s0 up

参考: https://www.cnblogs.com/opsprobe/p/9979234.html

安装Java11

1
yum install java-11-openjdk -y
1
2
3
4
5
java -version

openjdk version "11.0.5" 2019-10-15 LTS
OpenJDK Runtime Environment 18.9 (build 11.0.5+10-LTS)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.5+10-LTS, mixed mode, sharing)

安装Tomcat

1
2
3
4
wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.27/bin/apache-tomcat-9.0.27.tar.gz
tar xzf apache-tomcat-9.0.27.tar.gz
mv apache-tomcat-9.0.27 /usr/local/tomcat9

启动tomcat

1
2
cd /usr/local/tomcat9/
./bin/startup.sh

输出示例

1
2
3
4
5
6
Using CATALINA_BASE:   /usr/local/tomcat9
Using CATALINA_HOME: /usr/local/tomcat9
Using CATALINA_TMPDIR: /usr/local/tomcat9/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/tomcat9/bin/bootstrap.jar:/usr/local/tomcat9/bin/tomcat-juli.jar
Tomcat started.

最后浏览器中输入 http://localhost:8080 即可访问tomcat服务器了。

war文件部署

打war包

项目名称为mygoodcache

eclipse中项目上右键 export-->war file -->Browse(指定打完的包存放路径)-->finish mygood.war包已经完成

部署到tomcat

  • 找到tomcat的安装路径(如:/usr/local/tomcat9/
  • webapps文件夹中如果有war包及文件夹都删除
  • /usr/local/tomcat9/webapps 中上传新的war包
  • /usr/local/tomcat9/bin/startup.bat 启动tomcat

安装lnmp

https://lnmp.org/install.html

创建数据库

CREATE DATABASE crawler_pool CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

导入数据库

mysql -p crawler_pool < mygood.sql

Godaddy是流行的域名注册,虽然有些垃圾,但注册域名有时还是可以的。它有API可使用,以购买域名,大部分域名还是可以购买的。

但如果你账户中没有余额,是无法使用API购买的,这篇文章介绍如何向Godaddy中预充值。

注意:使用Godaddy的API买域名是无法使用优惠券的。

API有时也会买域名失败,虽然大部分情况下会自动退款,但也有不退款的情况发生,对于我来说.co.za的域名发生过这种情况,你需要特别提醒godaddy给你处理。

这种充值方式是没有发票的,在Godaddy中账户中,你无法找到对应的billing记录。只会在Good As Gold中显示一个收据编号,然后一个充值提示,不会和买域名时一样,会生成一个详情的订单记录。

向GoDaddy中预存款,以使用API注册域名

Godaddy中有一个Good As Gold付款方式。在 账户设定,付款方式中可以看到。

https://account.godaddy.com/payment-methods

image-20191028141636275

你可以参考以下链接阅读Godaddy的帮助,通过向godaddy的银行账号转账,以达到预存款目的。这个账号,在下面的支付宝中会使用。

https://sg.godaddy.com/zh/help/good-as-gold-727

image-20191028140809338

收款银行名称:JPMorganChase Bank
**银行地址:**270 Park Avenue, New York, NY 10017
账户名称:GoDaddy.com, LLC
账号:580706823
汇款路径号码:021000021
ACH 汇款路径号码:124001545
Swift 代码:CHASUS33
参考:客户编号

支付宝付款流程图

先在支付宝里搜索上银汇款,打开上银汇款,如下界面,最低100美元起步。

手续费是每次50,无论你汇多少,它都是按次收费的,所以单次可以多汇一点,会省点手续费。

支付宝美元汇款,不支持信用卡,只能是银行卡或余额宝。

image-20191028135048071

我已经添加了联系人,如果你是第一次汇款,需要按godaddy的帮助说明,添加godaddy的银行账号

https://sg.godaddy.com/zh/help/good-as-gold-727

image-20191028135201586

选择计算机网络服务费

image-20191028135210797

下面这一项,需要手动填写,并且要注意不要弄错,否则会失败。

交易对方名称:GoDaddy.com, LLC

具体购汇项目:域名购买

附言:这个是你的Godaddy账号 (Customer id)

登陆你的Godaddy账号,可以点击右上角你的头像,会看到Customer id

附言,只需要填写customer id,不要有其它的任何字符,否则会失败。

image-20191028135836822

image-20191028135219882

image-20191028135227517

image-20191028135236330

image-20191028135245963

image-20191028135254666

image-20191028135302802

第一次充值后,需要5-7个工作日,但也可能2-3天就可以。

之后再充值2-3天就会到账,但一般不会超过7个工作日。

0%