vpn 安装

更换内核,安装锐速加速软件(可以跳过)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
[root@vultr_test ~]# rpm -qa|grep kernel
kernel-3.10.0-862.el7.x86_64
kernel-tools-libs-3.10.0-862.14.4.el7.x86_64
kernel-3.10.0-862.14.4.el7.x86_64
kernel-tools-3.10.0-862.14.4.el7.x86_64
[root@vultr_test ~]# rpm -ivh http://soft.91yun.org/ISO/Linux/CentOS/kernel/kernel-3.10.0-229.1.2.el7.x86_64.rpm --force
Retrieving http://soft.91yun.org/ISO/Linux/CentOS/kernel/kernel-3.10.0-229.1.2.el7.x86_64.rpm
Preparing... ################################# [100%]
Updating / installing...
1:kernel-3.10.0-229.1.2.el7 ################################# [100%]
[root@vultr_test ~]# rpm -qa|grep kernel
kernel-3.10.0-862.el7.x86_64
kernel-tools-libs-3.10.0-862.14.4.el7.x86_64
kernel-3.10.0-862.14.4.el7.x86_64
kernel-tools-3.10.0-862.14.4.el7.x86_64
kernel-3.10.0-229.1.2.el7.x86_64

降内核:
rpm -ivh http://xz.wn789.com/CentOSkernel/kernel-3.10.0-229.1.2.el7.x86_64.rpm --force

rpm -qa | grep kernel

wget -N --no-check-certificate https://raw.githubusercontent.com/wn789/serverspeeder/master/serverspeeder.sh #锐锋加速VPN

bash serverspeeder.sh

安装工具
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
[root@vultr_test ~]# yum -y install net-tools vim
[root@vultr_test ~]# wget --no-check-certificate https://bootstrap.pypa.io/get-pip.py
[root@vultr_test ~]# python2.7 get-pip.py`

安装并配置ss
(1)安装
[root@vultr_test ~]# pip install shadowsocks

(2)配置
[root@vultr_test ~]# vim /etc/shadowsocks.json
{
"server":"0.0.0.0",
"server_port":8765,
"password":"bd87d3600c6baffe20f0a03ebf17985f",
"timeout":300,
"method":"rc4-md5"
}

{
"server":"0.0.0.0",
"server_port":8765,
"password":"ef487f64b19e581554564ab8635c8995",
"timeout":60,
"method":"rc4-md5"
}

(3)启动
[root@vultr_test ~]# ssserver -c /etc/shadowsocks.json -d start
[root@vultr_test ~]# netstat -anpt |grep python
tcp 0 0 0.0.0.0:8765 0.0.0.0:* LISTEN 1162/python2.7

(4)关闭防火墙
[root@vultr_test ~]# systemctl stop firewalld
[root@vultr_test ~]# systemctl disable firewalld

优化并添加monit监控
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#!/bin/sh
### BEGIN INIT INFO
# Provides: ssserver
# Required-Start: $remote_fs $network
# Required-Stop: $remote_fs $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: starts crontab-ui
# Description: starts the crond Process Manager daemon
### END INIT INFO

prefix=/usr/bin/ssserver

case $1 in
start)
${prefix} -c /etc/shadowsocks.json -d start > /dev/null 2>&1 &
if [ $? -eq 0 ];then
echo "start ssserver ....... ok"
else
echo "start ssserver ....... fail"
fi
;;

stop)
${prefix} -c /etc/shadowsocks.json -d stop
if [ $? -eq 0 ];then
echo "stop ssserver ....... ok"
else
echo "stop ssserver .......fail"
fi
;;
status)
process=`pgrep -f '/usr/bin/ssserver' | wc -l`
if [ ${process} -eq 1 ];then
echo "ssserver is running ........!!!"
else
echo "ssserver is not running ........!!!"
fi
;;

*)
echo "Usage: $0 {start|stop|status}"
;;
esac

阅读全文 »

阅读全文 »

zabbix 部署

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
环境:两台机器,搭建LAMP 平台

yum -y install gcc gcc-c++ php-* net-snmp net-snmp-utils

rpm -ivh mysql-.........

rpm -ivh mysql-server............

修改数据库初始密码:mysql>set password=password("123");

yum -y install libcurl-devel net-snmp-devel mysql-devel

/etc/init.d/httpd start;chkconfig httpd on

/etc/init.d/httpd start;chkconfig httpd on

部署zabbix

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
1、配置和安装zabbix

#useradd zabbix

#tar -zxvf zabbix-2.2.1.tar.gz

#cd zabbix-2.2.1

#vim config.sh

./configure --prefix=/usr/local/zabbix/ --enable-proxy --enable-server --enable-agent --with-libcurl --with-net-snmp

#sh config.sh

#make && make install

安bin sbin #命令
share #帮助文档
lib #库文件
ext #配置文件
我们只需要修改配置文件即可:装成功:ls /usr/local/zabbix/有以下文件:bin etc lib sbin share

#cp misc/init.d/fedora/core/zabbix_* /etc/init.d/ #*表示的是server和agentd

#chmod +x /etc/init.d/zabbix_*

#vim /etc/init.d/zabbix_server

BASEDIR=/usr/local/zabbix #修改安装目录

#vim /etc/init.d/zabbix_agentd

BASEDIR=/usr/local/zabbix #修改安装目录

service zabbix_server start

service zabbix_agentd start

chkconfig --add zabbix_server

chkconfig --add zabbix_agentd

2、拷贝zabbix网页目录到网站根目录下

#cp -rp frontends/php/ /var/www/html/zabbix

#chown apache:apache -R /var/www/html/zabbix/

3、给zabbix用户授权并创建库,把zabbix数据导入到刚刚创建的库中

#mysql -uroot -p密码

mysql>show create database mysql; #查看字符集的关键字

mysql>create database zabbix DEFAULT CHARACTER SET utf8; #创建zabbix库并指定字符集

mysql>grant all zabbix.* to zabbix@localhost identified by "密码";

cd / root/zabbix-2.2.1/database/mysql/ #数据库目录下

数据导入数据库是按照一下顺序的

# mysql -uzabbix -pzabbix zabbix < schema.sql

# mysql -uzabbix -pzabbix zabbix < images.sql

# mysql -uzabbix -pzabbix zabbix < data.sql

4、vim /etc/php.ini

post_max_size = 8M #把8M改为16M

max_input_time = 60 #把60改为300

max_execution_time = 30 #把30改为300

date.timezone = Asia/Shanghai

service httpd restart

#cd zabbix

#rpm -ivh --nodeps php-mbstring-5.3.3-22.el6.x86_64.rpm

#rpm -ivh --nodeps php-bcmath-5.3.3-22.el6.x86_64.rpm #这两个包到网上下载

http://localhost/zabbix

安装过程中:写监控端IP,数据库 名、用户名和密码都是zabbix,在数据库一起端口不要修改

4、进入到登录界面:用户名:admin 密码:zabbix

注释:

监控页面显示连接不上数据库,查看日志:tailf /tmp/zabbix_server.log

错误提示:23055:20160406:212209.070 [Z3001] connection to database 'zabbix' failed: [1045] Access denied for user 'root'@'localhost' (using password: YES) 23055:20160406:212209.071 Database is down. Reconnecting in 10 seconds

连接不上数据库:修改zabbix_server主配置文件 vim /usr/local/zabbix/etc/zabbix_server.conf

103 DBUser=zabbix #修改用户

111 DBPassword=zabbix #去掉注释,加上密码

在页面中配置监控:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
1、管理(菜单最后一个)-》用户(users)-》创建用户主群(左面)选择用户(user)-》双击admin-》zh_CN  #页面改为中文

2、配置本机监控本机:要运行/etc/init.d/zabbix_agentd start(谁被监控服务器监控谁就要起代理服务程序)

# vim /usr/local/zabbix/etc/zabbix_agentd.conf

LogFile=/tmp/zabbix_agentd.log

Logfile=/var/log/zabbix/zabbix_agentd.lg

修改日志文件目录:mkdir /var/log/zabbix/ chown zabbix:zabbix /var/log/zabbix/

81 Server=127.0.0.1,192.168.1.254 #监控服务器的IP地址

122 ServerActive=192.168.1.254:10051 #监控服务器的IP地址和端口号

134 Hostname=Zabbix serve

/etc/init.d/zabbix_agentd restart

默认就是自己监控自己:组态-》主机->双击zabbix_server->主机—>最下方修改受监测中-》save

选择监测中—》最新组态-》

2、监控远端某台服务器:(先配置被监控端) tar -zxvf zabbix-2.2.1.tar.gz useradd zabbix cd zabbix-2.2.1

./configure --prefix=/usr/local/zabbix --enable-agent make && make install

cp misc/init.d/fedora/core/zabbix_agentd /etc/init.d/

chmod +x /etc/init.d/zabbix_agentd

chkconfig --add zabbix_agentd

chkconfig zabbix_agentd on

vim /etc/init.d/zabbix_agentd

BASEDIR=/usr/local/zabbix #修改安装目录

service zabbix_agentd start

vim /usr/local/zabbix/etc/zabbix_agentd.conf #修改配置文件

ServerActive=192.168.1.254:10051 #监控端服务器IP地址和端口

Hostname=Zabbix client 100 Server=127.0.0.1,192.168.1.254

service zabbix_agentd restart

在监控端配置被自己监控服务器:192.168.1.100 组态-》主机-》创建主机(右面)-》主机名(server100)-》linuxserver-》被监控的IP地址,其他的默认-》状态(受监控中)-》save

双击server100-》模板-》添加

3、自定义监控项:监控192.168.1.101上面的用户数

(1、)在客户端(被监控端),定义监控命令 cd /usr/local/zabbix/etc/

vim zabbix_agentd.conf

255 UnsafeUserParameters=1 #开启允许自定义命令

243 Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/

定义命令格式:UserParameter=<key>,<shell command>

cd /usr/local/zabbix/etc/zabbix_agentd.conf.d/

vim mon.user.numbers

UserParameter=mon.user.num,wc -l /etc/passwd | awk '{print $1}'

service zabbix_agentd restart

cd /usr/local/zabbix/

./bin/zabbix_get -s 127.0.0.1 -k mon.user.num #测试上方是否正常使用

(2)使用被监控端定义命令,对客户机做监控 在监控端调用该命令:在192.168.1.10操作 cd /usr/local/zabbix/bin/

./zabbix_get -s 192.168.1.101 -k mon.user.num

创建监控模板: a、组态->模板-》创建模板(右上角)-》模板名(monitorusernum)-》可见名称(monitorusernum)-》linux server -》 一下默认-》保存

b、应用集-》创建应用集-》名称(monusernum101) c、在应用集下面创建项目-》 创建监控项-》名称(monuserbig42)->类型(zabbix代理)-》键值mon.user.num(自己创建)-》十进制-》后面默认(使用自己创建应用集)-》save

组态-》用户-》模板(刚刚自己自定义模板添加进去)

d、在监控客户端4.101时使用刚才自己定义模板

四、监控报警: 当监控到客户端192.168.4.205的用户数大于42个 报警 并发送报警邮件

定义触发器: 点击触发器-》创建触发器-》名称(mon.user.big42)->表达式(添加) -》项目(自己刚刚创建的) 最末T值是>N N 值(插入) 选择严重
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

组态-》动作->创建动作->名称(to-mail自己定义、邮件主题、邮件正文)

默认接收人:server100userbig42 默认信息不变

条件 默认就可以不用设置

操作 -新的 操作类型 :送出信息 送到用户:admin 仅送到: email 条件: 不用设置 添加 存档
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

定义邮件的用户(发件人) 管理-用户--用户(右上方 选择 )--admin --- 示警媒介----添加

               类型:email 收件人:root@localhost

             添加 存档

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

配置邮件 (或者直接用Python写个脚本来发送)

1
2
3
4
5
6
7
指定邮件服务器 管理---示警媒介类型---Email--名称:Email        类型;电子邮件        邮件服务器名:localhost        SMTP  HELO:localhost        SMTP电邮:zabbix@localhost(发件人地址)

在监控服务器 本机运行邮件服务(postfix \dovecot)

yum -y install postfix yum -y install dovecot /etc/init.d/postfix restart /etc/init.d/dovecot restart

测试监控报警配置是否成功
阅读全文 »

pxe批量部署服务器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
环境:准备两台机器(在虚拟机中操作),先关闭iptables、selinux和NetworkManager

1、配置dhcp

yum -y install dhcp

cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf

vim /etc/dhcp/dhcpd.conf

default-lease-time 600;
max-lease-time 7200;
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.20 192.168.1.80;
option routers 192.168.1.254;
next-server 192.168.1.101;
filename "pxelinux.0";
}

/etc/init.d/dhcpd start

chkconfig dhcpd on

2、yum -y install tftp-server tftp syslinux

rpm -ql syslinux #查看syslinux安装目录

cd /usr/share/syslinux/

cp -p pxelinux.0 /var/lib/tftpboot/

vim /etc/xinetd.d/conf

disable = no #启用

cd /media/isolinux/

cp -p vmlinuz initrd.img splash.jpg /var/lib/tftpboot/

mkdir /var/lib/mysql/pxelinux.cfg

cp -p isolinux.cfg /var/lib/mysql/pxelinux.cfg/default

vim /var/lib/mysql/pxelinux.cfg/default #修改配置文件

default linux

append initrd=initrd.img ks=ftp://192.168.1.101/pub/ks.cfg

services xinetd start ;chkconfig xinetd on

3、yum -y install vsftpd

service vsftpd on

mkdir /var/ftp/pub/iso/

cp -rp /media/* /var/ftp/pub/iso/

chmod 644 /var/lib/tftpboot/pxelinux.cfg/default

4、yum -y install system-config-kickstart

system-config-kickstart

(1)基本配置中设置语言:中文简体 时区:shanghai 密码,高级配置:给安装后重新引导系统和在文本模式中执行安装(默认为图形安装)打上勾,后者可以不打勾;

(2)安装方法:选择ftp或是http。列如ftp: 第一个是写服务器地址,第二个是共享光盘镜像文件目录

(3)主引导记录、分区和磁盘标签都选第一个;新建 “/” ,"boot"和"swap"

(4)网卡配置:添加eth0网卡

(5)防火墙z选择禁用

(6)软件包安装:默认是最小化安装,可以选择包:

基本系统中:基本和网络文件系统

桌面:X窗口系统、字体、桌面、输入法和通用桌面

语言支持:中文

把文件保存到:/var/ftp/pub/

chmod 644 /var/ftp/pub/ks.cfg

新建一台虚拟机(网络模式选为仅主机模式) 测试看是否成功

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
ks文件:

#platform=x86, AMD64, 或 Intel EM64T
#version=DEVEL
# Firewall configuration
firewall --disabled
# Install OS instead of upgrade
install
# Use network installation
url --url="ftp://192.168.1.101/pub/iso/"
# Root password
rootpw --iscrypted $1$KNdqC7g/$mVPG2RIICeyyECaglEkBy.
# System authorization information
auth --useshadow --passalgo=sha512
# Use text mode install
text
firstboot --disable
# System keyboard
keyboard us
# System language
lang zh_CN
# SELinux configuration
selinux --disabled
# Installation logging level
logging --level=info
# Reboot after installation
reboot
# System timezone
timezone Asia/Shanghai
# Network information
network --bootproto=dhcp --device=eth0 --onboot=on
# System bootloader configuration
bootloader --location=mbr
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
# Disk partitioning information

part / --fstype="ext4" --size=50000 part /boot --fstype="ext4" --size=200 part swap --fstype="swap" --size=8129

%packages @base @basic-desktop @chinese-support @fonts @general-desktop @input-methods @internet-browser @network-file-system-client @x11

%end

注释:

1
2
3
4
5
6
7
8
9
10
11
12
13
boot.msg (显示“[enter]”启动提示信息)

initrd.img(这是一个初始化文件,一个最小的系统镜像)

pxelinux.0 (这文件是为legcay启动,它是legcay的启动镜像)

pxelinux.cfg(该文件夹下放的是启动菜单,手动创建)

splash.jpg(背景图片,可以不要)

vesamenu.c32(legacy BIOS引导菜单工具,可从光盘或/usr/share/syslinux/中找到)

vmlinuz(内核文件)
阅读全文 »

squid

squid 正向代理
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
环境:准备三台服务器,一台web服务器,squid服务器,客户端。关闭selinux和iptables

1、yum -y install squid #squid代理服务器

vim /etc/squid/squid.conf

visible_hostname www.baidu.com #(主机名没改,就不用写,改了就要写)

cache_mem 64 MB #高速缓存

cache_dir ufs /var/spool/squid 100 16 256 #缓存目录 ufs文件格式 100是缓存大小 16是一级子目录 256是二级子目录

http_port 80 vhost # 把端口改为80,把httpd服务关闭

cache_peer 网站服务器的地址 parent 80 0 originserver #定义网站服务器地址,当squid缓存中没有时,访问web网站服务器,并存储在squid代理服务器上

service squid restart

chkconfig squid on

2、yum -y install httpd elinks #web网站服务器

service httpd start

chkconfig httpd on

echo "1111" > /var/www/html/index.html

elinks --dump http://localhost/ 或 curl http://localhost

3、客户测试:http://squid服务器的IP地址
squid 反向代理
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
环境:准备三台服务器,一台web服务器,squid服务器,客户端。关闭selinux和iptables

1、yum -y install squid #squid代理服务器

vim /etc/squid/squid.conf

visible_hostname www.baidu.com #(主机名没改,就不用写,改了就要写)

cache_mem 64 MB #高速缓存

cache_dir ufs /var/spool/squid 100 16 256 #缓存目录 ufs文件格式 100是缓存大小 16是一级子目录 256是二级子目录

http_port 80 vhost # 把端口改为80,把httpd服务关闭

cache_peer 网站服务器的地址 parent 80 0 originserver #定义网站服务器地址,当squid缓存中没有时,访问web网站服务器,并存储在squid代理服务器上

service squid restart

chkconfig squid on

2、yum -y install httpd elinks #web网站服务器

service httpd start

chkconfig httpd on

echo "1111" > /var/www/html/index.html

elinks --dump http://localhost/ 或 curl http://localhost

3、客户测试:http://squid服务器的IP地址
阅读全文 »

mysql 读写分离

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
环境: 四台机器,两台数据库服务器,一台代理,一台客户端测试

注意:先把代理建完并测试以后,再搭建主从数据库服务器

一、搭建代理服务器

1、下载mysql-proxy包,并解压到/usr/local/,重命名为mysqlproxy(重命名根据自己情况,不一定)

-P #指定代理服务器的ip地址和端口号

-r #指定从数据库服务器的IP地址和端口(读操作)

-b #指定主数据库服务器的IP地址和端口(写操作)

-s #指定lun脚本文件的路径

--keepalive #若进程奔溃,自动重启此进程(可写可不写)

lun脚本存放的目录:/usr/local/share/doc/mysql-proxt/rw--splitting.lua #区分读写操作的

/usr/local/bin/mysqlproxy/bin/mysql-proxy #启动命令

/usr/local/bin/mysqlproxy/bin/mysql-proxy -P 指定代理服务器的IP地址和端口 -r 从数据库服务器IP地址和端口 -b 主数据库的IP地址和端口 -s /usr/local/share/doc/mysql-proxt/rw--splitting.lua &

关闭命令端口: pkill 进程名或 kill -9 pid

二、搭建主从数据库

主从授权用同一个用户,建议为:proxyuser ,地址为:%(代表所有地址)

主从数据库的搭建和之前一样

三、客户端测试

mysql -h代理IP -u授权用户 -p授权密码

注释:前5个终端读写操作都是在主数据库服务器上,超过五个时(不包括第五个)读写操作正常分开,除非重启该服务,否者读写永久生效
阅读全文 »

主从搭建

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
环境:两台服务器(主:192.168.1.10,从:192.168.1.20),两个数据库服务器有的库和表必须一样,不一样用mysqldump备份导入从数据库服务器上。
mysql主服务器:
1、启用binlog日志
2、service mysql stop
vim /etc/my.cnf
[mysqld]
log-bin #启用binlog日志(默认是主机名和数据库目录,也可以自定义目录:/root/dsn)
server_id=10 主机位标识(1-255) #标识自己的身份
server mysql start

3、授权一个连接用户可以从192.168.1.20来连接自己,连接后有拷贝数据的权限
grant replication slave on *.* to 用户名@“从服务器地址” identified by “密码”;#给从服务器授权,到从服务器上测试是否能连接

二、从服务器设置:
1、server mysql stop

vim /etc/my.cnf
[mysqld]
log-bin=slave #可有可无,不做硬性规定
server-id=20 #主机位标识(1-255) #标识自己的身份

server mysql start

2、连接主数据库服务器,看连接是否正常(命令行下)
#mysql -h192.168.1.20 -u授权用户 -p密码

3、从本机登录数据库
mysql -uroot -p密码
mysql>change master to master_host="192.168.1.10",master_user="授权用户",master_password="授权密码",master_log_file="binlog日志文件",
master_log_pos=时间节点;
master_log_file="" #主服务器上日志文件名
mysql>change master to master_host="10.2.0.29",master_user="scrm",master_password="thankyou",master_log_file="mysql-bin.000003",master_log_pos=154;

/ebsig/mysqldata/mysql/auto.cnf #如果是克隆从数据库,需要重新生成uuid,先把老的UUID备份,重启mysql服务就可以了

mysql>set global server_id=2; #配置文件server_id不能生效要自己设置;

用命令mysql>show master status; #查看时间节点和binlog日志文件名(在主服务器上操作的)

mysql>show slave status\G; #在从服务器上操作的,看状态:Slave_IO_Running: No                                Slave_SQL_Running: No

mysql>start slave; #开启从服务器Slave_IO_Running: Yes                  Slave_SQL_Running: Yes

三、测试:在主数据库服务器上创建表、库和更新数据,到从数据库服务器上查看是否同步

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
数据库主从同步原理:

如果有NO没有成功:原因:从服务器是克隆,修改uuid,存放在数据库目录下/var/lib/mysql/auto.cnf,随便修改一下就可以了

错误信息看一下四项:
IO进程原理:IO进程负责拷贝主数据库服务器binlog里的SQL语句到本机中继binlog日志里 IO进程报错信息 Last_IO_Errno: 0 #出错的个数
                                          Last_IO_Error: #出错的信息
SQL进程原理:SQL进程负责本机中继binlog日志里sql语句把数据写进数据库中 SQL进程报错信息 Last_SQL_Errno: 0 #出错的个数
                                      Last_SQL_Error: #出错的信息
IO进程什么时候出错? 连接不上主数据库服务器时会出错 ping (线路问题 安全) 授权
SQL进程什么时候会出错? sql语句操作的库、表和字段在自己本机不存在,就会出错
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
从数据库目录下有几个文件
验证从数据库服务器是否能自动备份主数据库服务器上的数据
master.info #记录主数据文件的信息
web-relay-bin.index #记录已有的中继binlog日志
relay-log.info #记录中继日志信息
web-relay-bin.00000X #中继binlog日志:是从主数据库服务器上拷贝到本机的binlog日志

DDL 和 DML含义

1
2
3
4
DDL:数据定义语言(创建表和修改表、truncate 删除表)
DML(Data Manipulation Language):数据操纵语言命令使用户能够查询数据库以及操作已有数据库中的数据。
truncate不是可以删除表中数据,这就算可以操作数据库中的数据了,为什么还是DDL而不是DML呢?谢谢!
那像drop table这些命令是手工提交的?

主从延迟

MySQL数据库主从同步延迟原理
1
2
3
mysql主从同步原理:
主库针对写操作,顺序写binlog,从库单线程去主库顺序读”写操作的binlog”,从库取到binlog在本地原样执行(随机写),来保证主从数据逻辑上一致。
mysql的主从复制都是单线程的操作,主库对所有DDL和DML产生binlog,binlog是顺序写,所以效率很高,slave的Slave_IO_Running线程到主库取日志,效率比较高,下一步,问题来了,slave的Slave_SQL_Running线程将主库的DDL和DML操作在slave实施。DML和DDL的IO操作是随即的,不是顺序的,成本高很多,还可能可slave上的其他查询产生lock争用,由于Slave_SQL_Running也是单线程的,所以一个DDL卡主了,需要执行10分钟,那么所有之后的DDL会等待这个DDL执行完才会继续执行,这就导致了延时。
MySQL数据库主从同步延迟是怎么产生的?
1
2
3
4
有朋友会问:“主库上那个相同的DDL也需要执行10分,为什么slave会延时?”,答案是master可以并发,Slave_SQL_Running线程却不可以。
当主库的TPS并发较高时,产生的DDL数量超过slave一个sql线程所能承受的范围,那么延时就产生了,当然还有就是可能与slave的大型query语句产生了锁等待。
首要原因:数据库在业务上读写压力太大,CPU计算负荷大,网卡负荷大,硬盘随机IO太高
次要原因:读写binlog带来的性能影响,网络传输延迟。
阅读全文 »