Linux 学习 11
Posted zhopper
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux 学习 11相关的知识,希望对你有一定的参考价值。
1、简述DNS服务器原理,并搭建主-辅服务器
工作原理:
如客户端想要访问www.a.com
1、客户端主机先查询本地dns缓存和hosts文件中是否有www.a.com域名的记录,如果有直接使用,如果没有则向定义的dns服务器去请求(/etc/resolv.conf)
2、dns服务器收到主机请求会查询dns服务器本地是否有www.a.com域名的解析记录,如果有直接返回给客户端,如果没有,dns服务器直接向根服务器请求查询
3、根服务器收到dns服务器的查询请求发现是查询.com域的信息,然后根服务器则返回.com域的服务器ip给到dns服务器
4、dns服务器收到.com的服务器IP,再次向.com的服务器请求a.com的域名服务器ip
5、dns服务器收到.com返回a.com域名服务器IP,直接再次请求a.com域名服务器,查询www的解析记录
6、dns服务器查询到www.a.com的解析记录后则直接返回给客户端并缓存此记录
7、客户端主机则拿到www.a.com的ip就直接访问到目标主机了,并缓存了此解析记录
创建主DNS服务器:
软件包安装:
yum -y install bind bind-libs bind-utils
配置文件/etc/named.conf ,注释如下两行:
// listen-on port 53 { 127.0.0.1; };
// allow-query { localhost; };
创建cat.local域区域记录:
vim /var/named/cat.local.zone // cat.local.zone 是自定义的区域路径,注意该文件权限
$TTL 1D // TTL 设置变量,下面可以复用
@ IN SOA ns1 admin.cat.local. ( // ns1表示dns服务器 后面admin 是邮箱,只是@要改成点(.)
1 ; serial //数据库版本号,辅助DNS通过它来更新
1D ; refresh // 更新同步时间
1H ; retry // 同步失败后再更新时间
1W ; expire // 从服务器失效时间
3H ) ; minimum // 不存在记录的缓存时间
NS ns1 // ns记录 显示哪个是主哪个是从服务器
ns1 IN A 192.168.30.18 // 服务器的A记录
www IN A 192.168.30.28
创建配置并指向这个域记录:
vim /etc/named.rfc1912.zones
zone "cat.local" IN { //创建cat.local区域
type master; // 类型为主
file "cat.local.zone"; // 输入刚创建的文件名
};
重启DNS服务器
测试:
在此基础上创建辅助DNS服务器:
安装软件:yum install bind bind-libs
主DNS上更新辅助DNS的NS类型地址
辅助DNS配置文件:
vim /etc/named.rfc1912.zones
zone "cat.local" IN { // 创建cat.local 辅助区域
type slave; // 角色为辅助
masters {192.168.30.18;}; // 指定谁是主
file "slaves/cat.local.zone"; // 同步的文件路径,文件会自动生成
};
重启DNS服务,cat.local.zone文件会自动同步到/var/named/slaves下
2、搭建并实现智能DNS
智能DNS ,简单来说,就是当客户端访问某个网站时,返回的是离客户端距离最近的站点,
搭建智能DNS,需要配置三个部分:
ACL控制,对IP做区域划分
view 控制,将对应的IP映射到对应的数据库文件
区域数据库文件:指定对应的主机记录
实施步骤:
安装软件: yum -y install bind bind-libs bind-utils
配置文件:
vim /etc/named.conf
acl A_area {
192.168.30.0/24; //创建ACL 指定对应区域IP
};
acl B_area {
172.16.0.0/24;
};
// listen-on port 53 { 127.0.0.1; };
// allow-query { localhost; };
view A_area { //创建视图,将区域IP 指定到对应的zone上
match-clients {A_area;};
include "/etc/named.rfc1912.zones.A";
};
view B_area {
match-clients {B_area;};
include "/etc/named.rfc1912.zones.B";
};
配置区域文件:
vim /etc/named.rfc1912.zones.A
zone "." IN {
type hint;
file "named.ca";
};
zone "cat.local" IN {
type master;
file "cat.local.zone.A";
};
vim /etc/named.rfc1912.zones.B
zone "." IN {
type hint;
file "named.ca";
};
zone "cat.local" IN {
type master;
file "cat.local.zone.B";
};
配置主机记录:
vim /var/named/cat.local.zone.A
$TTL 1D
@ IN SOA ns1 admin.cat.local. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ns1
ns1 A 192.168.30.8
www A 192.168.30.8
vim /var/named/cat.local.zone.B
$TTL 1D
@ IN SOA ns1 admin.cat.local. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ns1
ns1 A 172.16.0.30
www A 172.16.0.30
测试:
3、通过编译、二进制安装mysql5.7多实例
编译安装mysql 5.7:
准备环境:
yum install bison bison-devel zlib-devel libcurl-devel \\
libarchive-devel boost-devel \\
gcc gcc-c++ cmake ncurses-devel \\
gnutls-devel libxml2-devel libevent-devel \\
libaio-devel libtirpc-devel
创建mysql用户:
useradd -r -s /sbin/nologin mysql
准备数据目录:
mkdir /app/mysql 编译时程序安装路径
mkdir /data/mysql 数据库路径
chown mysql.mysql /data/mysql 更改用户组
解压程序并编译
tar xf mysql-5.7.34.tar.gz
cd mysql-5.7.34
cmake . \\
-DCMAKE_INSTALL_PREFIX=/app/mysql \\
-DMYSQL_DATADIR=/data/mysql \\
-DSYSCONFDIR=/etc/ \\
-DSYSTEMD_PID_DIR=/app/mysql \\
-DMYSQL_USER=mysql \\
-DWITH_DEBUG=0 \\
-DWITH_INNOBASE_STORAGE_ENGINE=1 \\
-DWITH_SSL=system \\
-DWITH_ZLIB=system \\
-DWITH_LIBWRAP=0 \\
-DDENABLED_LOCAL_INFILE=1 \\
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \\
-DDEFAULT_CHARSET=utf8 \\
-DDEFAULT_COLLATION=utf8_general_ci \\
-DDOWNLOAD_BOOST=1 \\ 在编译过程中如果找不到boost 会自动下载
-DWITH_BOOST=/usr/local/boost/
make && make install
将mysql的bin目录写入环境变量:
echo \'PATH=/app/mysql/bin:$PATH\' > /etc/profile.d/mysql.sh
. /etc/profile.d/mysql.sh
准备配置文件:这里多实例需要更改默认端口
vim /etc/my.cnf
[mysqld]
port=3307
datadir=/data/mysql
skip_name_resolve=1
socket=/data/mysql/mysql.sock
log-error=/data/mysql/mysql.log
pid-file=/data/mysql/mysql.pid
[client]
socket=/data/mysql/mysql.sock
生成数据库文件:自动产生临时的数据登录密码,可在mysql.log中查看
mysqld --initialize --user=mysql
准备启动文件并启动:
cp ./support-files/mysql.server /etc/init.d/mysqld
/etc/init.d/mysqld start
二进制安装5.7:
依赖包安装和用户创建前面已经完成
直接解压mysql 二进制包并创建软链接:
tar xf mysql-5.7.34-linux-glibc2.12-x86_64.tar.gz -C /usr/local
cd /usr/local/
ln -s mysql-xx mysql
chown -R root.root mysql/
准备配置文件
vim /etc/mysqlcnf/my.cnf 由于是多实例,二进制安装的配置路径需要更改
[mysqld]
port=3308
datadir=/data/mysqldata
skip_name_resolve=1
socket=/data/mysqldata/mysql.sock
log-error=/data/mysqldata/mysql.log
pid-file=/data/mysqldata/mysql.pid
[client]
socket=/data/mysqldata/mysql.sock
初始化数据库:
mysqld --defaults- file = /etc/mysqlcnf/my.cnf --initialize --user=mysql
启动数据库:
mysqld --defaults-file=/etc/mysqlcnf/my.cnf --user=mysql &
查看端口:
4、整理MySQL数据类型
整数型:
tinyint 占1个字节 (-128 -127)
smallint 占2个字节 (-32768-32768)
mediumint 占3个字节(-8388608 - 8388607)
int 占4个字节(-2147483648-2147483647)
bigint 占8个字节(+-9.22*10的18次方)
以上如果加上修饰符unsigned后,则最大值翻倍,如tinyint unsigned 表示0-255
浮点型:
float(m,d) 单精度浮点型8位精度 , m是总的个数,d表示小数位
double(m,d) 双精度浮点型16位精度,m是总的个数,d表示小数位
如定义字段为float(6,3) 则一个数123.45678 表示为123.457
定点数:
decimal 存放的是精确值,存为十进制,可用于财务上的数字定义
字符串:
char(n) 固定长度 最多255个字符,不是字节
varchar(n) 可变长度 最多65535个字符
tinytext 可变长度最多255个字符
text 可变长度 最多65535个字符
mediumtext 可变长度,最多2的24次方-1个字符
longtext 可变长度最多 2 的32次方-1个字符
BINARY(M) 固定长度 可存放二进制或字符
VARBINARY(M) 可变长度 可存放二进制或字符
日期时间类型:
date 日期‘2021-12-2’
time 时间‘11:22:33’
datetime 日期时间‘2021-12-2 11:22:33’
timestamp 自动存储记录修改时间 随着其它字段修改自动刷新
YEAR(2),YEAR(4) : 年份
以上是关于Linux 学习 11的主要内容,如果未能解决你的问题,请参考以下文章