前言
在Ubuntu上安装OpenJDK 8,Redis,Mysql8,可以使用APT(Advanced Package Tool)包管理器来完成,以下是适用于较新Ubuntu版本(如18.04及以上)的推荐步骤。
更新软件包索引
sudo apt update
Java
安装
sudo apt install openjdk-8-jdk
验证
java -version
javac -version
Nginx
安装
sudo apt install nginx
配置
Nginx的配置文件通常位于
/etc/nginx/
目录下,主要配置文件是nginx.conf
,站点配置文件通常位于/etc/nginx/sites-available/
目录中。可以编辑这些文件来定制Nginx的行为,比如设置虚拟主机、更改监听端口等。
测试配置文件是否生效:
sudo nginx -t
重新加载Nginx
sudo systemctl reload nginx
启动
启动Nginx服务,并设置它在系统启动时自动启动
sudo systemctl start nginx
sudo systemctl enable nginx
验证
也可通过ip访问80端口验证
sudo systemctl status nginx
Redis
安装
sudo apt install redis-server
配置
默认安装后的redis配置文件路径为 /etc/redis/redis.conf
可以修改密码配置端口设置持久化策略等
启动
启动Redis服务,并设置它在系统启动时自动启动
sudo systemctl start redis
sudo systemctl enable redis
验证
sudo systemctl status redis
Mysql
安装
sudo apt install mysql-server
配置
密码
通过如下命令引导设置密码
sudo mysql_secure_installation
如果密码未设置成功,通过如下方式修改密码
通过如下命令跳过授权登陆mysql,修改密码
sudo mysqld_safe --skip-grant-tables &
mysql -u root
USE mysql
FLUSH PRIVILEGES
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourNewPassword'
sudo systemctl restart mysql
ONLY_FULL_GROUP_BY(可选)
mysql8默认启用了ONLY_FULL_GROUP_BY SQL模式(不支持group by 的字段不在查询列表)
sudo vim /etc/mysql/conf.d/mysql.cnf
在[mysqld] 下粘贴
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
备份
方案一
转储sql
mysqldump -u root -p 123456 databaseName > backup.sql
导入
nohup mysql -u root -p databaseName < /home/ubuntu/backup.sql &
方案二(数据量较大时)
多个表可以重复此过程或编写脚本进行批量处理
1. 执行导入表结构SQL
首先,在目标MySQL服务器上创建表的结构,但不包含数据。这通常通过执行包含CREATE TABLE语句的SQL脚本来完成,这些语句定义了表的列、索引、约束等属性
mysql -u username -p -D dbname < table_structure.sql
2. ALTER TABLE
table_name DISCARD TABLESPACE;
对你要迁移的InnoDB表执行此命令。这一步会将表的空间从InnoDB表空间文件中分离出去,实际上是删除了对表数据文件(.ibd
文件)的引用,但不会删除文件本身。这样做的目的是允许你安全地移动这些文件
ALTER TABLE table_name DISCARD TABLESPACE;
3. 转移 .ibd
文件
在Ubuntu系统中,MySQL的ibd文件(InnoDB表的空间文件,用于存储数据和索引)通常默认存储在/var/lib/mysql
目录下。这个目录是MySQL的数据目录,其中包含了各个数据库的文件夹,每个数据库文件夹内则有各自的.ibd
文件。
可以通过检查MySQL的配置文件(通常位于/etc/mysql/mysql.conf.d/mysqld.cnf
或/etc/mysql/my.cnf
)来确认datadir
的设置
datadir = /var/lib/mysql
在执行了DISCARD TABLESPACE
之后,可以安全地将表的.ibd
文件从源服务器的数据目录移动到目标服务器对应的位置。确保目标服务器的MySQL服务已经停止,或者至少该表没有被任何活动使用,以防止数据不一致
scp /source/data/table_name.ibd root@demo:/source/to/data/
4. ALTER TABLE
table_name IMPORT TABLESPACE;
在目标服务器上,启动MySQL服务(如果之前关闭了的话),然后对同一个表执行此命令。这一步会将之前分离的表空间文件重新关联到表上,使得表可用
ALTER TABLE table_name IMPORT TABLESPACE;
5. 验证迁移结果
启动
启动Mysql服务,并设置它在系统启动时自动启动
sudo systemctl start mysql
sudo systemctl enable mysql
拓展
Linux命令
ls -l | grep "^-" | wc -l 统计当前文件夹下的文件数(ls -l 文件以"-"开头,而目录以"d"开头)
ls -a 显示所有文件(包括隐藏文件)
ls -R 递归列出子目录内容
ls *a* 通配符匹配,找出含a的文件和目录
find . -type f -name "*a*" -type f
指定了只查找文件,-name "*a*"
指定了文件名模式
查找当前目录及其子目录中查找所有文件名中包含"a"的文件
uname -a 显示系统详细信息
Linux ip-192-168-*-* 5.15.0-1041-aws #46~20.04.1-Ubuntu SMP Wed Jul 19 15:40:00 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
解释:
-
Linux: 表明这是一个基于Linux内核的操作系统。
-
ip-192-168-*-*: 这部分通常代表机器在网络中的IP地址或者是AWS EC2实例的私有DNS主机名格式。在这个例子中,
ip-192-168-*-*
暗示着这台机器可能位于私有IP地址空间内的一个AWS云环境里,使用192.168.*.*作为其内部IP地址。 -
5.15.0-1041-aws: 这是Linux内核的版本号。
5.15.0
是内核主版本,1041
是针对特定发行版或硬件平台(这里是AWS)定制的版本号,意味着这是针对Amazon Web Services优化的内核版本。 -
#46~20.04.1-Ubuntu SMP:
#46
表示这个内核版本是该系列的第46次构建。20.04.1
指的是Ubuntu的发行版版本号,这里是Ubuntu 20.04 LTS(长期支持版本)的一个小更新。SMP
表示对称多处理(Symmetric Multi-Processing),意味着这个内核支持多处理器系统。
-
Wed Jul 19 15:40:00 UTC 2023: 这是内核编译的时间戳,即该内核版本最后一次编译的时间,这里是协调世界时(UTC)2023年7月19日15点40分。
-
x86_64 x86_64 x86_64: 这部分重复三次的
x86_64
强调了系统的体系结构是64位的,即AMD64或Intel 64架构,适用于支持64位运算的处理器。 -
GNU/Linux: 指出该操作系统是基于GNU项目组件和Linux内核的组合,这也是大多数现代Linux发行版的共同特征,体现了自由软件基金会对Linux系统的命名习惯。
综上所述,这段信息描述了一台运行在亚马逊云服务(AWS)上的Ubuntu 20.04 LTS系统的服务器,该服务器使用了一个针对AWS优化的、版本号为5.15.0-1041的64位Linux内核,内核最后一次更新编译于2023年7月19日。
vim命令
- 复制
yy
- 粘贴
p
- 删除
dd
- 撤销
u
- 全选
- 进入正常模式(按下
Esc
) - 输入
gg
将光标移动到文件的开头 - 接着输入
vgg
进入可视行选择模式并选中从当前行到文件末尾的所有行。在这里,v
是进入可视模式的命令,而G
是跳转到文件最后一行的命令
- 进入正常模式(按下