服务器服务迁移

前端迁移

项目

1
cd /data/web_front

压缩

1
tar -czvf school.tar.gz school

目标服务器

1
mkdir -p /data/web_front

解压

1
2
tar -xzvf school.tar.gz -C /data/web_front
cd /data/web_front/school

Nginx

前端

_school.xhkjedu.com.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
server {  
listen 80;
server_name school.xhkjedu.com;
return 301 https://$host$request_uri;
}

server {
server_name school.xhkjedu.com;
client_max_body_size 200m;
listen 443 ssl;
ssl_certificate /etc/nginx/cert/xhkjedu.pem;
ssl_certificate_key /etc/nginx/cert/xhkjedu.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
root /data/web_front/school/;
index index.html;
client_body_buffer_size 128k;
proxy_connect_timeout 300s;
proxy_send_timeout 300s;
proxy_read_timeout 300s;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
proxy_buffer_size 64k;
proxy_buffers 8 64k;
send_timeout 60;

location ~ .*\.(html)$ {
add_header Cache-Control no-store;
}
}

接口

2_8301_schoolapi.xhkjedu.com.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
upstream schoolapi_xhkjedu {   
server 172.24.197.9:8301;
}


server {
listen 80;
server_name schoolapi.xhkjedu.com;
listen 443 ssl;

ssl_certificate /etc/nginx/cert/xhkjedu.pem;
ssl_certificate_key /etc/nginx/cert/xhkjedu.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;

location /appversion/get_new {
proxy_pass https://schoolapi.xhkjedu.com/sapi/appversion/get_new;
}
location /appclient/get_new {
proxy_pass https://schoolapi.xhkjedu.com/sapi/appclient/get_new;
}
location /apprecord/get_new {
proxy_pass https://schoolapi.xhkjedu.com/sapi/apprecord/get_new;
}
location /appteacher/get_new {
proxy_pass https://schoolapi.xhkjedu.com/sapi/appteacher/get_new;
}
location /apppc/get_new {
proxy_pass https://schoolapi.xhkjedu.com/sapi/apppc/get_new;
}
location /apppc_stu/get_new {
proxy_pass https://schoolapi.xhkjedu.com/sapi/apppc_stu/get_new;
}
location /user/login_teacher {
proxy_pass https://schoolapi.xhkjedu.com/suser/user/login_teacher;
}
location /user/loginstu {
proxy_pass https://schoolapi.xhkjedu.com/suser/user/loginstu;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /class_student/stu_class {
proxy_pass https://schoolapi.xhkjedu.com/suser/class_student/stu_class;
}
location /user/check_login {
proxy_pass https://schoolapi.xhkjedu.com/suser/user/check_login;
}
location /module/treelst {
proxy_pass https://schoolapi.xhkjedu.com/sapi/module/treelst;
}
location /ps/list_todo_num {
proxy_pass https://schoolapi.xhkjedu.com/sapi/std/td_num;
}

location / {
proxy_pass http://schoolapi_xhkjedu/;
proxy_cookie_path / /;
proxy_redirect / /;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 1000m;
client_body_buffer_size 128k;
client_body_timeout 5m;
proxy_connect_timeout 300s;
proxy_send_timeout 300s;
proxy_read_timeout 300s;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
proxy_buffer_size 64k;
proxy_buffers 8 64k;
fastcgi_buffer_size 128k;
fastcgi_buffers 4 128k;
send_timeout 20s;
}
}

文件

8908_schoolfile.xhkjedu.com.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
upstream schoolfile_xhkjedu {   
server 172.24.197.13:8908;
}

server {
listen 80;
server_name schoolfile.xhkjedu.com;
listen 443 ssl;

ssl_certificate /etc/nginx/cert/xhkjedu.pem;
ssl_certificate_key /etc/nginx/cert/xhkjedu.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
charset utf-8;

location /download/ {
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Content-Type' 'application/octet-stream';
alias /data/wwwjarapi/8908schoolfile/static/;
}


location ~* /static {
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Credentials' 'true';
root /data/wwwjarapi/8908schoolfile/;
}



location / {
proxy_pass http://schoolfile_xhkjedu/;
proxy_cookie_path / /;
proxy_redirect / /;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 1000m;
client_body_buffer_size 128k;
client_body_timeout 5m;
proxy_connect_timeout 300s;
proxy_send_timeout 300s;
proxy_read_timeout 300s;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
proxy_buffer_size 64k;
proxy_buffers 8 64k;
fastcgi_buffer_size 128k;
fastcgi_buffers 4 128k;
send_timeout 20s;
}
}

MYSQL迁移

数据库本地复制

这里复制数据库是为了在迁移前删除不要的数据。

导出源数据库
使用mysqldump命令将源数据库导出到一个SQL文件中。

假设源数据库名为xhkjedu_school,目标数据库名为xhkjedu_school_20241107,你可以使用以下命令:

1
mysqldump -u root -p xhkjedu_school > xhkjedu_school.sql

这里的username是你的MySQL用户名。执行命令后,你会被提示输入密码。

创建目标数据库(如果目标数据库不存在):
使用mysql命令创建目标数据库。

如果目标数据库已经存在,可以跳过这一步。

1
mysql -u root -p -e "CREATE DATABASE xhkjedu_school_20241107;"

导入数据到目标数据库
使用mysql命令将导出的SQL文件导入到目标数据库中。

1
mysql -u root -p xhkjedu_school_20241107 < xhkjedu_school.sql

处理数据

删除部分表数据

1
2
3
4
5
6
7
SELECT
concat( 'delete from ', TABLE_SCHEMA, '.', TABLE_name, ';' )
FROM
information_schema.TABLES
WHERE
TABLE_SCHEMA = 'xhkjedu_school_20241107'
AND TABLE_NAME LIKE 'e_%';

查看表数据大小

1
2
3
4
5
6
7
8
9
10
11
12
SELECT 
TABLE_SCHEMA AS '数据库名',
TABLE_NAME AS '表名',
ROUND(DATA_LENGTH / 1024 / 1024, 2) AS '数据大小(MB)',
ROUND(INDEX_LENGTH / 1024 / 1024, 2) AS '索引大小(MB)',
ROUND((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024, 2) AS '总大小(MB)'
FROM
information_schema.TABLES
WHERE
TABLE_SCHEMA = 'xhkjedu_school_20241107'
ORDER BY
(DATA_LENGTH + INDEX_LENGTH) DESC;

处理数据后导出

1
mysqldump -u root -p xhkjedu_school_20241107 > xhkjedu_school_20241107.sql

导入PolarDB

1
2
3
mysql -h127.0.0.1 -P4886 -u root -e "CREATE DATABASE xhkjedu_school;"

mysql -h127.0.0.1 -P4886 -u root xhkjedu_school < xhkjedu_school_20241107.sql

压缩与解压

压缩

1
tar -czvf xhkjedu_school.sql.tar.gz xhkjedu_school.sql

压缩基本可以节约一半多点的空间

解压

1
tar -xzvf xhkjedu_school.sql.tar.gz

服务器间复制

从本地复制到远程

复制单个文件

1
scp /data/db/testdb.sql root@111.111.111.111:/data/db/testdb.sql

复制目录

1
scp -r /data/db/* root@111.111.111.111:/data/db/

查看数据行数

生成查询各表条数的SQL

1
2
3
4
5
6
7
8
9
10
select concat(
'select "',
TABLE_name,
'", count(*) from ',
TABLE_SCHEMA,
'.',
TABLE_name,
' union '
) from information_schema.tables
where TABLE_SCHEMA='xhkjedu_school_20241107';

把查询出来的结果整体复制后 删除最后一个union 整体全选运行即可

人大金仓迁移

添加软链

1
2
ln -s /data/db/Kingbase/KESRealPro/V009R003C011/Server/bin/sys_dump /usr/bin/sys_dump
ln -s /data/db/Kingbase/KESRealPro/V009R003C011/Server/bin/sys_restore /usr/bin/sys_restore

SQL导出导入

导出SQL

1
sys_dump -U root -d xhkjedu_school_zm -F p -f /root/xhkjedu_school_zm.sql

导入 SQL

连接

1
ksql -U system test

创建数据库

1
CREATE DATABASE xhkjedu_school_zm ENCODING 'UTF8' TEMPLATE template0;

退出 ksql
创建数据库完成后,使用 \l 命令查看数据库列表,可使用 \q 命令退出 ksql 交互界面。

导入

如果之前使用 sys_dump 导出的是 SQL 脚本,可以使用 psql 工具将其导入到目标数据库中。

1
ksql -U system -d xhkjedu_school_zm -f /root/xhkjedu_school_zm.sql

其中

  • -U username:指定数据库的用户名。
  • -d dbname:指定要导入数据的数据库名称。
  • -f /path/to/output.sql:指定要导入的 SQL 脚本文件的路径。

修改配置

1
find . -type f -name "application.properties" -exec sed -i 's/xhkjedu_school?currentSchema=xhkjedu_school/xhkjedu_school_zm?currentSchema=xhkjedu_school_zm/g' {} \;

压缩与解压

压缩

1
tar -czvf xhkjedu_school.sql.tar.gz xhkjedu_school.sql

压缩基本可以节约一半多点的空间

解压

1
tar -xzvf xhkjedu_school.sql.tar.gz

服务迁移

迁移Jar

1
2
3
cd /data/wwwjarapi

cp -r schoolcloudapi schoolcloudapi_bak

进入备份目录

1
cd schoolcloudapi_bak

删除日志文件

1
2
3
find . -type f -name "*log.txt" -exec rm -f {} \;
find . -type f -name "*.gz" -exec rm -f {} \;
find . -type f -name "*.tmp" -exec rm -f {} \;

压缩文件夹

1
2
cd ../
tar -czvf schoolcloudapi_bak.tar.gz schoolcloudapi_bak

目标服务器

1
mkdir -p /data/wwwjarapi

解压

1
tar -xzvf schoolcloudapi_bak.tar.gz -C /data/wwwjarapi

解压

1
2
cd /data/wwwjarapi
mv schoolcloudapi_bak schoolcloudapi

修改权限

1
find . -type f -name "*.jar" -exec chmod +x {} \;

迁移服务

1
cd /etc/init.d

压缩需要的文件

1
tar -czvf mysh.tar.gz 83[0-9][0-9].sh

解压

1
2
3
cd /etc/init.d
tar -xzvf mysh.tar.gz
rm -rf mysh.tar.gz

注册服务

首先,添加为系统服务

1
chkconfig --add 8301.sh

开机自启动

1
chkconfig 8301.sh on

进入目录

1
cd /etc/init.d

批量添加

1
2
3
for file in 83[0-9][0-9].sh; do
chkconfig --add "$file"
done

批量开机自启

1
2
3
for file in 83[0-9][0-9].sh; do
chkconfig "$file" on
done

查看服务

1
chkconfig --list

替换配置

文件字符替换

1
sed -i 's/Hello/Hi/g' example.txt

查找文件

1
find . -type f -name "application.properties"

批量替换

1
2
3
4
5
6
7
8
9
10
11
12
13
# 数据库
find . -type f -name "application.properties" -exec sed -i 's/172.24.197.12:54321/172.26.69.15:54321/g' {} \;
find . -type f -name "application.properties" -exec sed -i 's/current.datasource=mysql/current.datasource=kingbase/g' {} \;
find . -type f -name "application.properties" -exec sed -i 's/kingbase.username=root/kingbase.username=system/g' {} \;


# Redis
find . -type f -name "application.properties" -exec sed -i 's/cache.xhkjedu.com/172.26.69.11/g' {} \;
find . -type f -name "application.properties" -exec sed -i 's/redis.password=xhkjedu_school#redis/redis.password=xhkjeduQAZwsx/g' {} \;
# MQ
find . -type f -name "application.properties" -exec sed -i 's/172.24.197.10/172.26.69.11/g' {} \;
# 文件
find . -type f -name "application.properties" -exec sed -i 's/schoolfile.xhkjedu.com/schoolfile.zmeduyun.cn/g' {} \;

查找

1
grep -r "豫ICP备18016292号-1" .

替换

1
find . -type f -name "*.html" -exec sed -i 's/豫ICP备18016292号-1/豫ICP备18016292号/g' {} \;