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的主要内容,如果未能解决你的问题,请参考以下文章

linux学习:Nginx--常见功能配置片段与优化-06

VSCode自定义代码片段11——vue路由的配置

VSCode自定义代码片段11——vue路由的配置

VSCode自定义代码片段11——vue路由的配置

向Linus学习,让代码具有good taste

[linux][c/c++]代码片段01