Linux 学习 11

枕上诗书闲处好,门前风景雨来佳。这篇文章主要讲述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 SOAns1 admin.cat.local. (// ns1表示dns服务器后面admin 是邮箱,只是@要改成点(.) 1; serial//数据库版本号,辅助DNS通过它来更新 1D; refresh// 更新同步时间 1H; retry//同步失败后再更新时间 1W; expire//从服务器失效时间 3H ); minimum//不存在记录的缓存时间 NSns1//ns记录 显示哪个是主哪个是从服务器 ns1 INA192.168.30.18//服务器的A记录wwwINA192.168.30.28

创建配置并指向这个域记录:
vim /etc/named.rfc1912.zones zone "cat.local" IN {//创建cat.local区域 type master; //类型为主 file "cat.local.zone"; // 输入刚创建的文件名 };

重启DNS服务器
测试:
Linux 学习 11

文章图片


在此基础上创建辅助DNS服务器:
安装软件:yum install bindbind-libs
主DNS上更新辅助DNS的NS类型地址
Linux 学习 11

文章图片

辅助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下
Linux 学习 11

文章图片


2、搭建并实现智能DNS
智能DNS ,简单来说,就是当客户端访问某个网站时,返回的是离客户端距离最近的站点,
搭建智能DNS,需要配置三个部分:
ACL控制,对IP做区域划分
view 控制,将对应的IP映射到对应的数据库文件
区域数据库文件:指定对应的主机记录
实施步骤:
安装软件: yum -y install bindbind-libsbind-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 SOAns1admin.cat.local. ( 0; serial 1D; refresh 1H; retry 1W; expire 3H ); minimum NSns1 ns1A192.168.30.8wwwA192.168.30.8vim /var/named/cat.local.zone.B $TTL 1D @IN SOAns1admin.cat.local. ( 0; serial 1D; refresh 1H; retry 1W; expire 3H ); minimum NSns1 ns1A172.16.0.30wwwA172.16.0.30

测试:
Linux 学习 11

文章图片

Linux 学习 11

文章图片


3、通过编译、二进制安装mysql5.7多实例
编译安装mysql 5.7:
准备环境:
yum install bison bison-develzlib-devellibcurl-devel\\ libarchive-devel boost-devel\\ gcc gcc-c++ cmake ncurses-devel\\ gnutls-devellibxml2-devellibevent-devel\\ libaio-devel libtirpc-devel

创建mysql用户:
useradd -r -s /sbin/nologinmysql
准备数据目录:
mkdir /app/mysql编译时程序安装路径
mkdir /data/mysql数据库路径
chownmysql.mysql /data/mysql更改用户组
解压程序并编译
tar xfmysql-5.7.34.tar.gz cdmysql-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

Linux 学习 11

文章图片

将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/mysqldstart

Linux 学习 11

文章图片


二进制安装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-xxmysql chown -R root.rootmysql/

准备配置文件
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 &

查看端口:
Linux 学习 11

文章图片


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自动存储记录修改时间随着其它字段修改自动刷新
【Linux 学习 11】YEAR(2),YEAR(4) : 年份

    推荐阅读