主要教程参考:菜鸟教程
- 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。
- 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
- 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
sudo docker pull [imageName]:[Tag]
下载指定镜像到本地sudo docker images
查看所有已下载的镜像sudo docker rmi [imageName]
删除指定镜像sudo docker run -[option] [image] [command]
将镜像实例化为容器
例如:sudo docker run -itd centos:7 /bin/bash
sudo docker commit -m="info" -a="user" [containerID] [new imageName]:[Tag]
将某个容器提交为新镜像
提交后的镜像可以通过 sudo docker images 来查看
sudo docker tag [imageID] [imageName]:[Tag]
给某个镜像打上标签
sudo docker ps -a
查看现有容器sudo docker start/stop/restart [containerID/Name]
启动/停止/重启 一个容器sudo exec -[option] [containerID/Name] [command]
进入一个已经创建的容器sudo docker rm -f [containerID]
删除某个容器
1. 下载MySQL5.7的安装包,下载地址。
tar -zxvf mysql-5.7.36-linux-glibc2.12-x86_64.tar.gz -C /app
cd /app
mv mysql-5.7.36-linux-glibc2.12 mysql
rpm -qa | grep mysql
yum -y remove mysql-libs.x86_64
whereis mysql
find / -name mysql
rm -rf /var/lib/mysql
rm /etc/my.cnf
rpm -qa | grep mariadb
rpm -e --nodeps mariadb-libs-5.5.60-1.el7-5.x86_64
groupadd mysql
useradd -r -g mysql mysql
chown -R mysql:mysql /app/mysql
chmod -R 755 /app/mysql
/app/mysql/bin/mysqld --initialize --user=mysql --datadir=/app/mysql/data --basedir=/app/mysql
#在运行这条命令时会在弹出的[Note]中显示临时密码,稍后登录会用到
vi /etc/my.cnf #用vim当然更好
#按i进入插入模式
[mysqld]
datadir=/app/mysql/data
port=3306
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
symbolic-links=0
max_connections=400
innodb_file_per_table=1
lower_case_table_names=1 #表名大小写不敏感,敏感为0
/app/mysql/support-files/mysql.server start
/app/mysql/bin/mysql -u root -p #输入临时密码
set password for root@localhost = password('your PASSWARD'); #修改密码为你的密码
use mysql;
update user set user.Host='%' where user.User='root'; #开放远程连接
flush privileges;
ln -s /app/mysql/support-files/mysql.server /etc/init.d/mysql
ln -s /app/mysql/bin/mysql /usr/bin/mysql
service mysql restart
firewall-cmd --zone=public --add-port=3306/tcp --permanent #开放3306端口
firewall-cmd --reload #配置立即生效
mysql -u root -p #输入你设置的新密码
主要参考教程:博客地址
vim /etc/my.cnf #按i进入插入模式
[client]
socket=/app/mysql/mysql.sock
[mysqld]
basedir=/app/mysql
datadir=/app/mysql/data
user=mysql
pid-file=/app/mysql/data/mysqld.pid
log-error=/app/mysql/data/mysql.err
socket=/app/mysql/mysql.sock
port=3306
server-id=1
gtid-mode=ON
enforce-gtid-consistency=ON
server-id=1
binlog_format=row
log-bin=/app/mysql/data/mysql-bin
#编辑到此为止
systemctl restart mysqld
#开放3306端口
firewall-cmd --add-port=3306/tcp --permanent
firewall-cmd --reload
vim /etc/my.cnf #按i进入插入模式
[client]
socket=/app/mysql/mysql.sock
[mysqld]
basedir=/app/mysql
datadir=/app/mysql/data
user=mysql
pid-file=/app/mysql/data/mysqld.pid
log-error=/app/mysql/data/mysql.err
socket=/app/mysql/mysql.sock
port=3306
server-id=2
gtid-mode=ON
enforce-gtid-consistency=ON
server-id=2
binlog_format=ROW
log-bin=/app/mysql/data/mysql-bin
log_slave_updates=ON
skip-slave-start=1
#编辑到此为止
systemctl restart mysqld
#开放3306端口
firewall-cmd --add-port=3306/tcp --permanent
firewall-cmd --reload
mysql -uroot -p #登录MySQL
mysql> grant replication slave on *.* to 'user'@'host' identified by 'password'; #创建账号并授予权限,建议主机为X.X.X.%类型
mysql> flush privileges; #更新权限
mysql -uroot -p
mysql> change master to master_host='X.X.X.X', master_user='user',master_password='password',master_port=3306,master_auto_position=1; #指定master
mysql> start slave; #开启slave同步
mysql> show slave status\G;
#在显示的信息中找到关键几条:
Slave_IO_State: Waiting for master to send event #必须是这句
Master_Host: X.X.X.X
Master_User: user
Master_Port: 3306
Slave_IO_Running: Yes #必须是yes
Slave_SQL_Running: Yes #必须是yes
Master_Server_Id: 1
Master_UUID: #一串很长的码,如果为空就是设置没成功
Retrieved_Gtid_Set: #一串很长的码
Executed_Gtid_Set: #一串很长的码
#在master中新建数据库、表、插入数据
mysql> create database test1;
mysql> use test1;
mysql> create table testtb(id int primary key,name varchar(20);
mysql> insert into testtb values (101,'test');
#切换到slave中输入命令
mysql> show databases; #显示的数据库中应包含刚刚在master中新建的test1
mysql> use test1;
mysql> show tables; #显示的结果中应包括刚刚在master创建的testtb
mysql> select * from testtb; #应能查询到在master中插入的数据
#在slave(从机)的MySQL中运行指令
mysql> stop slave;
mysql> reset slave;
#停止服务并且重置slave
#然后再次从第5步的代码开始执行
#mysql> change master to
wget https://downloads.percona.com/downloads/Percona-XtraBackup-2.4/Percona-XtraBackup-2.4.28/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.28-1.el7.x86_64.rpm
yum install -y percona-xtrabackup-24-2.4.28-1.el7.x86_64.rpm
mysql> create user backup@‘localhost’ identified by ‘password’;
mysql> grant reload,lock tables,replication client,CREATE TABLESPACE,PROCESS,SUPER,CREATE,INSERT,SELECT on . to ‘backup’@‘localhost’;
#方法一在MySQL配置文件中编辑
vi /etc/my.cnf
[xtrabackup]
target_dir = /app/backup/
#方法二在命令中指定,见下面步骤
# 参数说明, innobackupex是xtrabackup的符号链接
innobackupex --defaults-file=[mysql配置文件路径] \
--datadir=[mysql数据文件夹路径] \
--host=[mysql连接地址] \
--port=[mysql端口] \
--user=[mysql备份账号名称] \
--password=[mysql备份账号密码] \
--socket=[用于连接mysql的socket文件] \
[指定备份存放路径]
# 操作例子如下, 指定全量备份路径在 /app/backup/full
innobackupex --defaults-file=/etc/my.cnf \
--datadir='/app/mysql/data' \
--host='X.X.X.X' \
--port=3306 \
--user='user' \
--password='password' \
--socket='/app/mysql/mysql.sock' \
/app/backup/full
# 备份好会出现 completed OK! 的字样, 按照例子出现的全量备份文件夹路径如下
/backup/full/YEAR-MONTH-DATE_HOUR-MIN-SEC
# 参数说明
innobackupex --defaults-file=[mysql配置文件路径] \
--datadir=[mysql数据文件夹路径] \
--host=[mysql连接地址] \
--port=[mysql端口] \
--user=[mysql备份账号名称] \
--password=[mysql备份账号密码] \
--socket=[用于连接mysql的socket文件] \
--incremental-basedir=[指定前一次备份的目录] \
--incremental=[指定增量备份存放的文件路径]
# 操作例子如下
innobackupex --defaults-file=/etc/my.cnf \
--datadir='/app/mysql/data' \
--host='X.X.X.X' \
--port=3306 \
--user='user' \
--password='password' \
--socket='/app/mysql/mysql.sock' \
--incremental-basedir=/app/backup/full/YEAR-MONTH-DATE_HOUR-MIN-SEC \
--incremental /app/backup/inc
# 备份好会出现 completed OK! 的字样, 按照例子出现的第一次增量备份文件夹路径如下
/app/backup/inc/YEAR-MONTH-DATE_HOUR-MIN-SEC
#增量备份也可以基于增量备份
innobackupex --defaults-file=/etc/my.cnf \
--datadir='/app/mysql/data' \
--host='X.X.X.X' \
--port=3306 \
--user='user' \
--password='password' \
--socket='/app/mysql/mysql.sock' \
--incremental-basedir=/app/backup/inc/YEAR-MONTH-DATE_HOUR-MIN-SEC \
--incremental /app/backup/inc
# 备份好会出现 completed OK! 的字样, 按照例子出现的第一次增量备份文件夹路径如下
/app/backup/inc/YEAR-MONTH-DATE_HOUR-MIN-SEC
Zookeeper下载地址,选择适合的版本下载。
wget https://dlcdn.apache.org/zookeeper/zookeeper-3.8.3/apache-zookeeper-3.8.3-bin.tar.gz
tar -zxvf apache-zookeeper-3.8.3-bin.tar.gz -C /app #将软件解压到指定目录
cd /app
mv apache-zookeeper-3.8.3-bin zookeeper #重命名
#刚解压完的Zookeeper不能直接运行需要整理一些文件
cd /app/zookeeper
mkdir data #新建data文件夹备用
cd conf
mv zoo_sample.cfg zoo.cfg #将配置文件重命名,这一步不可省略,只有这个名字才能被读取
vi zoo.cfg #当然用vim更好
#找到如上图所示的dataDir并修改为刚刚新建的data目录的地址
dataDir=/app/zookeeper/data
#再将上图中参数前的#去掉,如下所示
autopurge.snapRetainCount=3
autopurge.purgeInterval=1
#然后在文件末尾加上如下代码
server.1=X.X.X.X:2888:3888
server.2=X.X.X.X:2888:3888
server.3=X.X.X.X:2888:3888
#其中X代表三个节点的IP地址
#在data文件夹中新建文件myid
cd /app/zookeeper/data
#下面的步骤三台设备分别执行,即第一台机myid中写入1,第二台机myid中写入2……以此类推
#第一台
echo 1 > myid
#第二台
echo 2 > myid
#第三台
echo 3 > myid
#可以使用cat查看是否写入成功
cat myid
cd /app/zookeeper/bin
#三台机全部开启
./zkServer.sh start #开启成功的话最后会有STARTED字样提示
#验证并查看状态
./zkServer.sh status #成功最后一行会提示Mode:leader/follower
./zkServer.sh stop #三台机全部执行,成功会有STOPPED字样提示
1. 使用上面命令关闭三台机集群服务
2. 关闭虚拟机
3. 关闭主机
PostgreSQL下载链接,选择适合的版本进行下载。
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
sudo yum install -y postgresql16-server
sudo /usr/pgsql-16/bin/postgresql-16-setup initdb
sudo systemctl enable postgresql-16
sudo systemctl start postgresql-16
su postgres #会进入一个新的命令行
psql #进入应用
# 设置密码
alter user postgres with password 'password';
vim /var/lib/pgsql/16/data/postgresql.conf
#修改参数:
listen_addresses = '*'
# 编辑配置
vim /var/lib/pgsql/16/data/pg_hba.conf
# 添加内容
host all all 0.0.0.0/0 md5
#重启服务
sudo systemctl restart postgresql-16
#开启5432端口
firewall-cmd --add-port=5432/tcp --permanent --zone=public
#重启防火墙
firewall-cmd --reload
#格式
psql -h 主机IP -p 端口 -U 用户名 -W -d 数据库
#示例
psql -h 127.0.0.1 -p 5432 -U postgres -d postgres
#如果提示无此数据库则需要使用上面的方法登录并且新建一个你想登录的数据库,5432为psql的默认端口
- DBeaver下载地址,选择合适的版本进行下载安装。
- 打开软件,在菜单栏中选中数据库/新建数据库链接,在弹出的窗口中找到PostgreSQL,点击下一步。
- 在连接设置中填写主机、端口、数据库、用户名、密码,其余均默认即可。
- 点击测试连接,如果你没有下载该数据库的驱动的话,可能会提示你下载驱动,注意,下载驱动时要选择最新版驱动,否则有可能报错。有的时候默认选择的并不是最新版,需要你手动调整,点击驱动版本号即可选择版本。
- 如果测试连接成功,点击完成即可;如果失败,则根据报错提示进行调整。成功实例如下图所示:
-
keepalived下载地址 选择合适的版本进行下载
-
进入下载好的文件所在位置
tar -zxvf keepalived-2.1.0.tar.gz cd keepalived-2.1.0 ./configure --prefix=/usr/local/keepalived #prefix后地址可自定义,但最好还是这个路径,不太会出错 #如果上面的命令运行后报错提示有关opensll的错误,可以使用下面的命令进行下载 yum install openssl openssl-devel #安装成功后继续执行上面的./configure 命令 make && make install
-
编译成功后将会有文件出现在
/usr/local/keepalived
目录中cd /usr/local/keepalived ls #应有etc目录,有的话进行下一步 mkdir /etc/keepalived cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf
-
接下来编辑配置文件
keepalived.conf
vi /etc/keepalived/keepalived.conf #vim更好 #在默认的模版中我们需要修改几处即可 ! Configuration File for keepalived global_defs { notification_email { acassen@firewall.loc failover@firewall.loc sysadmin@firewall.loc } notification_email_from Alexandre.Cassen@firewall.loc smtp_server 192.168.200.1 smtp_connect_timeout 30 router_id LVS_DEVEL vrrp_skip_check_adv_addr # vrrp_strict #这一行如果需要vip飘逸的话需要注释掉 vrrp_garp_interval 0 vrrp_gna_interval 0 } vrrp_instance VI_1 { state MASTER #MASTER/BACKUP 两个不同模式主/备 interface ens33 #此处应为网卡名,以centos7为例即为ens33 unicast_src_ip 192.168.68.130 #本机实际IP地址 unicast_peer { 192.168.68.129 #需要飘逸的另一个主机实际IP地址 } virtual_router_id 51 #两台机需要一致 priority 100 #在MASTER的值要大于BACKUP,例如M100,B50,代表优先级 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.200.16 #vip地址 } } virtual_server 192.168.200.16 80 { #vip地址/端口 delay_loop 6 lb_algo rr lb_kind NAT persistence_timeout 50 protocol TCP real_server 192.168.68.130 80 { #实际IP地址1/端口 weight 1 #权重 SSL_GET { #以下是默认的我没改过 url { path / digest ff20ad2481f97b1754ef3e12ecd3a9cc } url { path /mrtg/ digest 9b3a0c85a887a256d6939da88aabd8cd } connect_timeout 3 retry 3 delay_before_retry 3 } } real_server 192.168.68.129 80 { #实际IP地址2/端口 weight 1 SSL_GET { url { path / digest ff20ad2481f97b1754ef3e12ecd3a9cc } url { path /mrtg/ digest 9b3a0c85a887a256d6939da88aabd8cd } connect_timeout 3 retry 3 delay_before_retry 3 } } }
-
启动服务
#开启服务 systemctl start keepalived.service #查看状态 systemctl status keepalived.service -l #如果启动失败可以查看日志看看哪里出错了 journalctl -u keepalived #如果上面两步都没问题则可以查看vip有没有出现 ip addr #如果vip出现了则说明配置成功
-
vip飘逸的检测
#在MASTER启动服务后,在BACKUP也启动服务 #在BACKUP机中运行下面的命令 systemctl start keepalived.service systemctl status keepalived.service #确认服务启动后查看IP地址 ip addr #此时,列出的信息中不应出现vip,如果有则说明主备都出现vip #如果无vip,进行下面的检查 #回到MASTER机,运行下面的命令 systemctl stop keepalived.service systemctl status keepalived.service #确认服务已经停止 ip addr #确认vip也已经消失 #再次回到BACKUP机,运行下面命令 ip addr #此时,vip应该成功出现,如果没有可以重启服务试试 systemctl restart keepalived.service
-
可以多重复几次上面步骤来确定vip飘逸的丝滑,至此keepalived配置vip结束。