linux下的日志同步linux 查看服务日志怎么做

博客分类:
最近因项目要求,在linux服务器上设置mysql的数据同步,幸好网络资源多啊,google一下全有了,不过实际操作起来,就麻烦了,遇到很多问题,不过多google一下也解决了,
同时学习了很多相关方面的知识,现将总结于此,以备后用,希望对有此需要的JE们有所帮助;
一、准备环境
自己做练习硬件资源少,只能在虚拟器上操作了哈哈!
linux 版本:Red Hat Enterprise Linux Server release 5.1
mysql 版本:MySQL-server-community-5.0.67-0.rhel5.i386.rpm
MySQL-client-community-5.0.67-0.rhel5.i386.rpm
(PS:mysql的同步机制是基于二进制日志binlog,不同的mysql版本会导致其格式的不同,从而导致不能实现数据同步,因此最好的搭配组合是Master的MySQL版本和Slave的
版本相同或者Slave的版本高于Master的版本,因为mysql是向下兼容的,为此Master的版本不能高于Slave版本,否则有可能不能实现功能;如果要实现双向同步,最好mysql是同
虚拟机版本:VMware6.0
在虚拟机上安装两个linux系统,并分别安装上mysql(mysql安装在俺博客的mysql安装有详细说明)
mysql默认安装的文件分别为:
  /var/lib/mysql/ (数据库目录,其所创建的数据库文件都在该目录下)
  /usr/share/mysql (mysql相关配置文件)
  /usr/bin (mysql相关命令,如mysql mysqladmin等)
为了区分系统,给系统命名一下,便于后面的说名:
LinuxA 系统: Ip:192.168.59.123 (Master)
LinuxB 系统: Ip:192.168.59.124 (Slave)
关闭LinuxA 和 LinuxB 的防火墙 #service iptables stop (保证系统互相可以ping的通)
二、设置单向mysql数据同步(LinuxA(Master)-&LinuxB(Slave))
1、 LinuxA 为 master
LinuxB 为 slave (同步LinuxA 上mysql上指定的test数据库中的数据);
由于刚安装的mysql,因此分别在LinuxA 和 LinuxB 的 mysql 上创建相同的数据库如 test(表有 stu , class,teacher),保证两个mysql上的数据库名一致其表名及表的
结构一致,若有一个不同,将导致无法实现同步;
(PS: 要使数据同步,必须保证数据库名一致其表名及表的结构一致)
2、在作为master(即LinuxA)的mysql上建立一个账户专门用于slave(即LinuxB)来进行数据同步
# mysql (默认用户,如设置了root密码,使用mysql -u root -p 登入mysql)
mysql&grant file on *.* to backa@'192.168.59.124' identified by 'backa'
(PS:此backa账户只能通过ip为192.168.59.124的访问)
在LinuxB上测试账户backa是否可以访问LinxuA上的mysql:
#mysql -u backa -p -h 192.168.59.123(输入密码backa,可以访问说明设置正确)
3、修改 my.cnf 文件
由于刚安装的mysql ,在/etc目录下可能无my.cnf文件,从/user/share/mysql目录中拷贝f 到/etc并修改成my.cnf (LinuxA 和LinuxB 上一样)
如 # cp /user/share/mysql/f
修改在LinuxA(Master)上的/f
log-bin=mysql-bin (日志文件,默认存在/var/lib/mysql下日志文件以mysql-bin为开头)
#log_bin= /var/log/mysql/mysql-bin.log(也可以自己指定,在此用# 表示注释掉了)
binlog-do-db =test(需要同步的数据库名,如需同步多个数据库,可以另起行如binlog-do-db =test1 )
server-id= 1 (mysql标示)
修改完后保存退出,并重启mysql 如#service mysql restart (重启正常,表示配置没错误)
修改在LinxuB(Slave)上的/f
server-id= 2 (mysql标示,唯一否则启动会出错误)
master-host=192.168.59.123 (同步Master的ip地址)
master-user=backa (同步所需的账号)
master-password=backa (同步账号的密码)
master-port=3306 (LinuxA 中mysql的访问端口)
replicate-do-db=test (所需同步的数据库名,如果是同步多个数据库,可以另起一行如 replicate-do-db=test1)
#replicate-do-table=test.stu (如果只需同步test数据库中的stu表)
#replicate-do-table=test.teacher(如果只需同步test数据库中的stu表)
master-connect-retry=60 (主服务器(Master)宕机或连接丢失的情况下,从服务器(slave)线程重新尝试连接主服务器之前睡眠的秒数)
修改完后保存退出,并重启mysql 如#service mysql restart (重启正常,表示配置没错误)
4.启动同步
进到LinuxA(Master)的mysql上:
mysql&show master status\G (查看master当前状态)
运行完以上命令显示结果如下:
File: mysql-bin.000001 (当前binlog日志文件)
Position: 98 (但前binlog日志文件位置)
Binlog_Do_DB: test (同步数据库)
Binlog_Ignore_DB:
(不需同步的数据,当前为设置)
-------------------------------------------------------------
进到LinuxB(Slave)的mysql上:
mysql&show slave status\G (查看slave同步状态)
运行完以上命令显示结果如下:
Slave_IO_State: Waiting for master to send event (slave 的io线程,获取master的binlog的日志内容,该为其目前的状态)
Master_Host: 192.168.59.123 (所需同步Master的ip地址)
Master_User: backa(同步所需的账号)
Master_Port: 3306(同步所需的mysql端口号)
Connect_Retry: 60
Master_Log_File: mysql-bin.000001 (master中的binlong的日志文件,如与master的日志文件名不同则同步失效)
Read_Master_Log_Pos: 98 (master中的binlong的日志文件的位置,即mysql-bin.000001文件中的第98位置开始同步,若与master上的位置不同则同步失效)
Relay_Log_File: localhost-relay-bin.000001
Relay_Log_Pos: 235
Relay_Master_Log_File: mysql-bin.000001
Slave_IO_Running: Yes
(Slave的io线程是否运行)
Slave_SQL_Running: Yes (slave的sql线程是否运行,需要io线程和sql线程同为yes才有效)
Replicate_Do_DB: test
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 98
Relay_Log_Space: 235
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
如果Slave_IO_State:不为 Waiting for master to send event 表示未现实同步
原因可能很多先列举自己遇到:
1、 Master_Log_File: mysql-bin.000001
Read_Master_Log_Pos:98
日志文件和位置与LinuxA(Master)的当前状态不一致
解决方式:(在LinuxB的mysql操作)
mysql&(修改前先关闭slave)
mysql&change master to
&master_log_file='mysql-bin.000001'
(ps:与LinuxA中的master的日志文件名相同)
&master_log_pso=98 (ps:与LinuxA中的master的日志文件当前位置相同)
&master_user='backa'
(如果同步的账户不一致,也可在此修改)
&master_password='backa'
(如果同步的账户密码不一致,也可在此修改)
(PS:如果重新修改/f 中相关slave的配置信息,重新启动查看 slave的状态还是显示未修改的数据,应为第一次是读取my.cnf,之后就会在/var/lib/mysql/下
生成一个 的文件,因此第二次就不会读取my.cnf的内容,而是读取中的内容,为此要想使重新修改的my.cnf生效的话,删除文件,重起mysql
mysql&(重新启动slave)
mysql&show slave status\G (查看slave状态)
如果显示的 Slave_IO_State: Waiting for master to send event
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
祝贺成功实现单向同步即 linuxA --& linuxB 的同步;
在LinuxA的mysql上对test的 insert , delete ,update及对表结构的修改等操作 都会同步到 LinuxB的mysql上的test数据库上
(ps:如果在master上执行如 insert into to stu (uuid(),'yushan') 则同步到 slave上 ,id不同,因为其id是用uuid生成的,所以会不一致,之后对这条数据的
delete 和 update则不会实现同步)
三、双向同步(LinuxA&---&LinuxB)
双向同步最好使用的mysql版本要一致,保证二进制日志binlog的格式相同;双向同步即对任何一方mysql的insert,update,delete,alter等操作都会影响到另一方mysql中
的数据;由于前面已成功设置单向同步,在此基础上,把LinuxB(Slave)的配置 添加到 LinuxA(Master) 上,把LinuxA(Master)的配置添加到LinuxB(Slave)上,然后启动设
置同步的binlong文件及当前位置即可,具体操作如下:
1、 LinuxA 在原有Master的基础上增加Slave (同步LinuxB 上mysql上指定的test数据库中的数据)
LinuxB 在原有Slave的基础上增加Mmaster(同步LinuxA 上mysql上指定的test数据库中的数据);
2、在作为master(即LinuxB)的mysql上建立一个账户专门用于slave(即LinuxA)来进行数据同步
# mysql (默认用户,如设置了root密码,使用mysql -u root -p 登入mysql)
mysql&grant file on *.* to backb@'192.168.59.123' identified by 'backb'
(PS:此backb账户只能通过ip为192.168.59.123的访问)
在LinuxA上测试账户backb是否可以访问LinxuB上的mysql:
#mysql -u backb -p -h 192.168.59.124(输入密码backb,可以访问说明设置正确)
3、修改 my.cnf 文件
在LinuxA 上的/f 文件上添加Slave的配置
#server-id= 2 (mysql标示,唯一否则启动会出错误,因为原先已有标示为1,在此就可以注释掉,一个mysql只需一个标示即可)
master-host=192.168.59.124 (同步LinuxB (Master)的ip地址)
master-user=backb (同步所需的账号)
master-password=backb (同步账号的密码)
master-port=3306 (LinuxB 中mysql的访问端口)
replicate-do-db=test (所需同步的数据库名,如果是同步多个数据库,可以另起一行如 replicate-do-db=test1)
#replicate-do-table=test.stu (如果只需同步test数据库中的stu表)
#replicate-do-table=test.teacher(如果只需同步test数据库中的stu表)
master-connect-retry=60 (主服务器(Master)宕机或连接丢失的情况下,从服务器(slave)线程重新尝试连接主服务器之前睡眠的秒数)
修改完后保存退出,并重启mysql 如#service mysql restart (重启正常,表示配置没错误)
在LinxuB上的/f文件上添加Master的配置
#server-id= 1 (mysql标示,唯一否则启动会出错误,因为原先已有标示为2,在此就可以注释掉,一个mysql只需一个标示即可)
log-bin=mysql-bin (日志文件,默认存在/var/lib/mysql下日志文件以mysql-bin为开头)
#log_bin= /var/log/mysql/mysql-bin.log(也可以自己指定,在此用# 表示注释掉了)
binlog-do-db =test(需要同步的数据库名,如需同步多个数据库,可以另起行如binlog-do-db =test1 )
修改完后保存退出,并重启mysql 如#service mysql restart (重启正常,表示配置没错误)
4.启动同步
进到LinuxB(Master)的mysql上:
mysql&show master status\G (查看master当前状态)
运行完以上命令显示结果如下:
File: mysql-bin.000003 (当前binlog日志文件)
Position: 231 (但前binlog日志文件位置)
Binlog_Do_DB: test (同步数据库)
Binlog_Ignore_DB:
(不需同步的数据,当前为设置)
-------------------------------------------------------------
进到LinuxA(Slave)的mysql上:
mysql&show slave status\G (查看slave同步状态)
运行完以上命令显示结果如下:
Slave_IO_State: Waiting for master to send event (slave 的io线程,获取master的binlog的日志内容,该为其目前的状态)
Master_Host: 192.168.59.124 (所需同步Master的ip地址)
Master_User: backb(同步所需的账号)
Master_Port: 3306(同步所需的mysql端口号)
Connect_Retry: 60
Master_Log_File: mysql-bin.000003 (master中的binlong的日志文件,如与master的日志文件名不同则同步失效)
Read_Master_Log_Pos: 98 (master中的binlong的日志文件的位置,即mysql-bin.000001文件中的第98位置开始同步,若与master上的位置不同则同步失效)
Relay_Log_File: localhost-relay-bin.000001
Relay_Log_Pos: 231
Relay_Master_Log_File: mysql-bin.000001
Slave_IO_Running: Yes
(Slave的io线程是否运行)
Slave_SQL_Running: Yes (slave的sql线程是否运行,需要io线程和sql线程同为yes才有效)
Replicate_Do_DB: test
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 98
Relay_Log_Space: 235
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
以上显示为正确同步 如果显示的一下数据不是
Slave_IO_State: Waiting for master to send event
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
若与以上的三个状态表示不同,则未实现同步;可以采用以上单向同步中的 change master 进行重新设置(ps:防火墙需关闭)
以上都能正确配置完且显示的状态一致,那么祝贺您成功实现双向同步即 linuxA &--& linuxB 的同步;
四、 mysql 数据同步相关说明(转载于网络,google一下很多)
  1. 同步机制实现概述
  MySQL同步机制基于master把所有对数据库的更新操作(更新、删除 等)都记录在二进制日志里。因此,想要启用同步机制,在master就必须启用二进制日志。
  每个slave接受来自master上在二进制日志中记录的更新操作,因此在slave上执行了这个操作的一个拷贝。应该非常重要地意识到,二进制日志只是从启用二进制日志开始的
时刻才记录更新操作的。所有的slave必须在启用二进制日志时把master上已经存在的数据拷贝过来。如果运行同步时slave上的数据和master上启用二进制日志时的数据不一致的
话,那么slave同步就会失败。
  2. 同步实现细节
  MySQL同步功能由3个线程(master上1个,slave上2个)来实现。执行 START SLAVE 语句后,slave就创建一个I/O线程。I/O线程连接到master上,并请求master发送二进制日志
中的语句。master创建一个线程来把日志的内容发送到slave上。这个线程在master上执行 SHOW PROCESSLIST 语句后的结果中的 Binlog Dump 线程便是。slave上的I/O线程读取
master的 Binlog Dump 线程发送的语句,并且把它们拷贝到其数据目录下的中继日志(relay logs)中。第三个是SQL线程,salve用它来读取中继日志,然后执行它们来更新数据。
  如上所述,每个mster/slave上都有3个线程。每个master上有多个线程,它为每个slave连接都创建一个线程,每个slave只有I/O和SQL线程。
  在MySQL 4.0.2以前,同步只需2个线程(master和slave各一个)。slave上的I/O和SQL线程合并成一个了,它不使用中继日志。
  slave上使用2个线程的优点是,把读日志和执行分开成2个独立的任务。执行任务如果慢的话,读日志任务不会跟着慢下来。例如,如果 slave停止了一段时间,那么I/O线程
可以在slave启动后很快地从master上读取全部日志,尽管SQL线程可能落后I/O线程好几的小时。如果slave在SQL线程没全部执行完就停止了,不过I/O线程却已经把所有的更新日
志都读取并且保存在本地的中继日志中了,因此在slave再次启动后就会继续执行它们了。这就允许在master上清除二进制日志,因为slave已经无需去master读取更新日志了。
  在mysql中执行 SHOW PROCESSLIST 语句就会告诉我们所关心的master和slave上发生的情况
  在master上,SHOW PROCESSLIST 的结果如下:
  mysql& SHOW PROCESSLIST\G
  *************************** 1. row ***************************
  Id: 21
  User: root
  Host: localhost
  db: mysql
  Command: Query
  Time: 0
  State: NULL
  Info: SHOW PROCESSLIST
  *************************** 2. row (MASTER线程)***************************
  Id: 25
  User: back
  Host: 192.168.1.125:34085
  db: NULL
  Command: Binlog Dump
  Time: 746
  State: Has sent waiting for binlog to be updated
  Info: NULL
  2 rows in set (0.01 sec)
  在这里,线程2是为一个slave连接创建的。结果表明所有未完成的更新日志已经都发送到slave了,master正等待新的更新日志发生。
  在slave上,SHOW PROCESSLIST 的结果如下:
  mysql& SHOW PROCESSLIST\G
  *************************** 1. row ***************************
  User: system user
  db: NULL
  Command: Connect
  Time: 70479
  State: Waiting for master to send event
  Info: NULL
  *************************** 2. row (I/O线程) ***************************
  User: system user
  db: NULL
  Command: Connect
  Time: 16971
  State: Ha waiting for the slave I/O thread to update it
  Info: NULL
  *************************** 3. row (SQL线程)***************************
  User: root
  Host: localhost
  db: NULL
  Command: Query
  Time: 0
  State: NULL
  Info: SHOW PROCESSLIST
  3 rows in set (0.00 sec)
  这表明线程2是I/O线程,它正连接到master上;线程3是SQL线程,它执行中继日志中的更新操作。现在,这2个线程都处于空闲状态,正等待新的更新日志。
  注意,Time 字段的值告诉我们slave上的日志比master晚了多久。
  3. Master 同步线程状态
  以下列出了master的 Binlog Dump 线程 State 字段中最常见的几种状态。如果在master上没有 Binlog Dump 线程,那么同步就没有在运行。也就是说,没有slave连接上来
  Sending binlog event to slave
  事件是由二进制日志构成,一个事件通常由更新语句加上其他信息。线程读取到一个事件并正发送到slave上。
  Finishe switching to next binlog
  读取完了一个二进制日志,正切换到下一个。
  Has sent waiting for binlog to be updated
  已经读取完全部未完成更新日志,并且全部都发送到slave了。它处于空闲状态,正等待在master上执行新的更新操作以在二进制日志中产生新的事件,然后读取它们。
  Waiting to finalize termination
  当前线程停止了,这个时间很短
  4. Slave的I/O线程状态
  以下列出了slave的I/O线程 State 字段中最常见的几种状态。从MySQL 4.1.1开始,这个状态在执行 SHOW SLAVE STATUS 语句结果的 Slave_IO_State 字段也会出现。这意味
着可以只执行 SHOW SLAVE STATUS 语句就能了解到更多的信息。
  Connecting to master
  该线程证尝试连接到master上。
  Checking master version
  确定连接到master后出现的一个短暂的状态。
  Registering slave on master
  确定连接到master后出现的一个短暂的状态。
  Requesting binlog dump
  确定连接到master后出现的一个短暂的状态。该线程向master发送一个请求,告诉它要请求的二进制文件以及开始位置。
  Waiting to reconnect after a failed binlog dump request
  如果二进制日志转储(binary log dump)请求失败了(由于连接断开),该线程在休眠时进入这个状态,并定期重连。重连的时间间隔由
  --master-connect-retry 选项来指定。
  Reconnecting after a failed binlog dump request
  该线程正尝试重连到master。
  Waiting for master to send event
  已经连接到master,正等待它发送二进制日志。如果master闲置时,这个状态可能会持续较长时间,如果它等待超过 slave_read_timeout 秒,就会发生超时。这时,它就会
考虑断开连接,然后尝试重连。
  Queueing master event to the relay log
  已经读取到一个事件,正把它拷贝到中继日志中以备SQL线程处理。
  Waiting to reconnect after a failed master event read
  读日志时发生错误(由于连接断开)。该线程在重连之前休眠 master-connect-retry 秒。
  Reconnecting after a failed master event read
  正尝试重连到master。当连接确定后,状态就变成 Waiting for master to send event。
  Waiting for the slave SQL thread to free enough relay log space
  relay_log_space_limit 的值非零,中继日志的大小总和超过这个值了。I/O线程等待SQL线程先处理中继日志然后删除它们以释放足够的空间。
  Waiting for slave mutex on exit
  当前线程停止了,这个时间很短。
  5. Slave的SQL线程状态
  以下列出了slave的SQL线程 State 字段中最常见的几种状态:
  Reading event from the relay log
  从中继日志里读到一个事件以备执行。
  Ha waiting for the slave I/O thread to update it
  已经处理完中继日志中的全部事件了,正等待I/O线程写入更新的日志。
  Waiting for slave mutex on exit
  当前线程停止了,这个时间很短。
  SQL线程的 State 字段有时候也可能是一个SQL语句。这意味着它从中继日志中读取到一个事件了,从中提取出SQL语句,并执行它。
(自己画的mysql同步原理图)
相关mysql数据同步资料的连接:
http://deidara./039
/tech/database//65.html
scn.org/htm_data/288/.html
http://www.koven.org/archives/203.html
/harryguo/archive//1099223.html
http://www.blogjava.net/lzj520/archive//182485.html
浏览: 113192 次
来自: 厦门
可不可以写一个一级和二级缓存的demo呢。。。新手求指教,谢谢 ...
还是你写的详细,别的作者写的太笼统 谢谢
哥们不错。。。很好,转走OK么?
很详细,可是排版不太好啊!!
在同样的目录下也有一个文件叫catalina.sh可以直接到这 ...
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'    一、系统日志架构  1.日志永久的储存在/var/log中,且日志消息由两个服务负责处理,分别为systemd-journald和rsyslog。  2./var/log目录保管由rsyslog维护的各种特定于系统和服务的日志文件。  3./var/log/messages
大多数日志消息记录在此处  /var/log/secure
安全和身份验证相关消息和错误的日志文件  /var/log/maillog
与邮件服务器相关的消息和日志文件  /var/log/cron
与定期执行任务相关的日志文件  /var/log/secure
与系统启动相关的消息记录在此处  二、查看系统日志文件  1.配置文件 编辑 /etc/rsyslog.conf 。  每行左侧表示指令匹配的日志消息的设备和严重性。每行右侧表示要将日志消息保存到的文件。  *代表所有设备或所有严重性级别。  2.日志文件轮转  日志通过logrortate使用工具“轮转”,以防止他们将包含/var/log/的文件系统填满。轮转数次后,丢弃原日志文件一释放磁盘空间。  3.分析系统日志条目  一共有4项,分别为  (1)记录该条目的时间戳  (2)发送该日志消息的主机  (3)发送该日志消息的程序或进程  (4)发送的实际消息  4.利用tail监控日志文件  tail -f /path/to/file 可以监控事件的一个或多个日志文件的后10行,并做到实时监控。  三、查看systemd日志条目---通过journalctl查找事件  1.以root用户身份运行,journalctl命令从最旧的日志条目开始显示完整的系统日志。  2.默认情况下,journalctl显示后10行日志条目,与tail相似,我们也可以运用-n来指定显示的行数;运用-f来做到实时的更新。  3.还可以指定优先级  journalctl -p err来显示优先级为err或以上的条目。  4.我们还可以指定特定的时间段,运用--since,--until  例:journalctl --since” 20:30:00”   --until “ 12:00:00”  5.搜索相关特定进程或事件  _COMM
命令的名称  _EXE
进程的可执行文件的路径  _PID
进程的PID  _UID
运行改程序用户的UID  _SYSTEMD_UNIT
启动该进程的systemd单元   四、设置本地时钟和时区  1.使用timedatectl命令简要显示当前的时间相关系统设置。  2.运用timedatectl list-timezones列出时区的数据库。  3.在root用户下可以更改当前的时区系统设置。  timedatectl set-timezone xxxx/xxxx  4.运用set-time改变时间  timedatectl set-time 9:00:00  5.timedatectl set-ntp true/false 启用或关闭NTP时间的同步。  6.chronyd服务通过与配置的NTP服务器同步,使不精确的本地时钟保持准确。  五、管理压缩的tar文档  1.使用tar命令我们可以将大型的文件集归档到一个文件中,并可以使用gzip,bzip2,xz三种方式来进行压缩。  2.tar操作命令  c
创建文件  x
提取文档  f file name
要操作的文档的文件名  v
显示过程,详细信息  p
提取时不更改文件的权限  t
列出存档的内容  z
gzip方式存档  j
bzip2方式存档  J
xz方式存档  3.使用tar来归档文件和目录  tar cf archive.tar file1 file2 file3  用tar创建新文件时此文件的后缀为 .tar  前面的文件为创建的新文件,后面的文件为所要归档的文件,可多个。  4.列出所归档的文件的内容  tar tf
/root/etc.tar  5.提取tar创建的文档  #mkdir /root/etcbackup  #cd /root/etcbackup  #tar xf /root/etc.tar  (1)提取时我们要进入我们所要提取到的文件  (2)root用户提取文件时,tar将尝试保留文件的原始用户和组的所有权,而运用普通用户执行时,此文件的所有者变为现在执行的用户。  (3)提取文件时文件的权限会被改变,我们可以加入p命令不更改权限。  6.创建tar压缩的文档  (1)有三种压缩:  gzip
压缩速度最快,运用最广  bzip2
比gzip压缩的文件小  xz
提供可用方式中的最低压缩率  (2)这三种压缩方式都可以压缩单个文件,但所生成的文件后缀不一样  gzip
.tar.gz  bzip2
.tar.bz2  xz
  (3)tar cjf /root/logbackup.tar.gz /var/log  7.提取tar压缩过的文档  #mkdir /tmp/etcbackup  #cd /tmp/etcbackup  #tar xjf /root/etcbackup.tar.gz  使用方法与提取非压缩文档一样但要记住加上后缀  六、系统间传输文件  1.运用scp命令  (1)scp命令可以将文件从远程主机传输到本地系统,或者反之。  (2)传输的位置以【user@】host:/path的格式指定,其中【user@】为可选的,如果忽略此部分,则默认为调用scp的用户。  (3)在系统传输前,用户必须通过密码或SSH秘钥进行身份验证。  (4)从本地复制到目标系统  scp /etc/yun.conf /etc/hosts serverX:/home/student  前两个为本地文件,后一个为目标位置  (5)从远程复制到本地  scp serverX:/etc/hostname /home/student  (6)要想递归的复制整个目录树,则使用-r命令
-r serverX:/var.log /home/student  2.运用sftp远程传输文件  (1)在运行前要启动sftp会话,此命令需要一个[user@]host格式的远程位置,其中【user@】为可选的,如果忽略此部分,则默认为调用sftp的用户。  (2)建立前我们还需要使用SSH服务器接受任何方式的身份验证。  (3)使用exit退出sftp会话。  (4)进入sftp会话后,我们相当于在那台系统上进行操作,执行的任何操作都是针对我们所访问的系统,如mkdir,ls,pwd等。  (5)但使用put,get时会默认为命令后的地址为本地地址。则我们可以直接进行传输。  (6)进行往过传输时我们要先进入我们所要复制到的文件夹例面,再执行put进行传输。  mkdir hostbackup  cd hostbackup  put /etc/hosts  (7)在执行往回传时,可以直接应用get   get /etc/yum.conf  七、在系统间同步文件  1.rsync 也可以在系统间或本地文件夹中同步文件,与scp的不同在于,rsync要复制两个的差异部分,而scp则需复制全部的内容,这样同步的时间与效率就会有差距。  2.rsync -n 这是一个很重要的选项,他要执行空运行。空运行时一种运行的模拟,即会显示如果不空运行时会有哪些的更改。  3.-a
存档模式  -v
显示同步添加的详细信息  -p
保留权限  -r
递归整个目录树  -l
同步符号链接  -t
保留时间戳  -g
保留组的所有权  -o
保留文件所有者  -D
同步设备文件  4.在本地同步两个文件时,需要进入root用户。  rsync -av /var/log /tmp  将/var/log在/tmp下同步一个副本  5.如果不想在目标文件夹下创建一个新的文件夹/log,即只把/log下的文件直接同步到/tmp文件夹目录下,则在源目录的末尾加上/  rsync -av /var/log/ /tmp  6.在两个系统中同步文件的操作与格式指定都跟scp一样  rsync -av /var/log serverX:/tmp  将本地的/ver/log文件同步到系统serverX中的/tmp目录下。  rsync -av serverX:/tmp /var/log   将serverX下的/tmp中的文件同步到本地的/var/log目录中。  八、使用nacli配置网络  1.NetworkManager是监控和管理网络设置的守护进程。  2.设备:网络的接口  连接:供设备使用的配置,由一组设置组成。   同一设备可能有多个连接,但一次只能有一个保持活动状态。  3.nmcli的命令摘要  nmcli dev status
显示所有的设备  nmcli con show
显示所有的连接  nmcli con show “ID”
显示该连接的详细信息  nmcli con up “ID”
激活连接  nmcli con down “ID”
取消激活  nmcli con add..
添加新连接  nmcli con mod/del “ID”
更改/删除连接  4.创建网络连接  新建连接“static”,并指定IP地址和网关  nmcli con add con-name “static” ifname eth0 autoconnect no type ethernet ip4 172.25.X.10/24 gw4 172.25.X.254  5.通过nmcli修改网络接口  (1)通过nmcli con mod 参数修改现有的连接。  (2)关闭自动连接  nmcli con mod “static” connection.autoconnect no  (3)指定DNS服务器  nmcli con mod “static” ipv4.dns 172.25.X.254  (4)添加DNS服务器  nmcli con mod “static” +ipv4.dns 172.25.X.254  (5)替换静态IP地址和网关  nmcli con mod “static” ipv4.addresses “172.25.X.10/24 172.25.X.254”  (6)添加没有网关的IP地址  nmcli con mod “static” +ipv4.addresses “172.25.X.10/24 172.25.X.254”  (7)在nmcli con mod 将把设置保存到配置中,此时要激活或重新激活该连接  cmcli con up “static”  九、编辑网络配置文件  1.我们通过编辑接口配置文件来配置网络。  2.这些配置文件的命名为  /etc/sysconfig/network-scripts/ifcfg-&name&,name是指配置文件控制的设备或连接名称。  3.我们要以root身份编辑此文件  (1)在文件中附加一个条目,指定IPV4地址  echo “IPADDR1=10.0.X.1”&& /etc/sysconfig/network-scripts/ifcfg-eth0  (2)附加条目,指定网络前缀  echo “PREFIX1=24”&& /etc/sysconfig/network-scripts/ifcfg-eth0  4.修改配置文件后我们要运行nmcli con reload 使NetworkManager 读取配置更改。接口依然要重新启动  nmcli con reload  nmcli con down “System eth0”  nmcli con up “System eth0”  十、配置主机名和名称解析  1.hostname 命令显示修改系统的主机名  2.静态主机名储存在/etc/hostname 中,我们可以使用vim编辑此文件来添加新的主机名,或使用  hostnamectl set-hostname XXX 来添加主机名  3.vim /etc/hostname
添加主机名  vim /etc/hosts
DNS本地配置  vim /etc/resolv.conf
DNS客户端配置文件
楼主发言:1次 发图:0张 | 更多
<span class="count" title="
<span class="count" title="
<span class="count" title="
<span class="count" title="
请遵守言论规则,不得违反国家法律法规回复(Ctrl+Enter)

我要回帖

更多关于 linux 查看服务日志 的文章

 

随机推荐