1 mysql 主從同步
python
################## master################33mysql
1.prividagelinux
grant 權限 on 數據庫對象 to 用戶sql
eg: grant slect ,insert on 數據庫.表 on '用戶'@'ip' indentified by '密碼';shell
從庫的權限數據庫
grant REPLICATION slave,super on *.* to '姓名'@'ip' indentified by '密碼';服務器
2. 配置文件網絡
[mysqld]session
server-id=1app
#這是數據庫ID,此ID是惟一的,主庫默認爲1,
#其餘從庫以此ID進行遞增,ID值不能重複,不然會同步出錯;
#通常取IP最後一段
log-bin=mysql-bi
#二進制日誌文件,此項爲必填項,不然不能同步數據;
binlog-do-db = testcreate
#須要同步的數據庫,若是須要同步多個數據庫;
#則繼續添加此項。
#binlog-do-db = testcreate1
#binlog-do-db = testcreate2
#binlog-ignore-db = mysql
#不須要同步的數據庫;
log_bin_trust_function_creators=TRUE
#若涉及及同步函數或者存儲過程須要配置,不然主備會產生異常不能同步
3.重啓
【window】.
net start/stop mysql
【linux】
service mysqld restart
################### 從庫#############################
server-id = 2#Master 與Slave的不能相同
master-host = 192.168.1.101#指定MASTER地址
master-user = replication#同步用戶名
master-password = 123456#同步密碼
master-port = 3306#同步端口
master-connect-retry=60#斷開從新鏈接等待時間
replicate-ignore-db=mysql#屏蔽須要同步數據庫
replicate-do-db= skydb#同步數據庫
relay-log=slave-relay-bin#生成日誌文件
expire-logs-days = 7 #檢測刪除15天之前的日誌
命令:
(修改從庫的主庫信息)
$:CHANGE MASTER
TO MASTER_HOST='192.168.35.129',
MASTER_USER='fxl',
MASTER_PASSWORD='123',
MASTER_LOG_FILE='mater-bin.000001',
MASTER_LOG_POS=0;
$:start slave
從庫掛掉:處理(slave_sql_running:no)
1.
$:stop slave
2.
處理問題
3.
$:CHANGE MASTER
TO MASTER_HOST='192.168.35.129',
MASTER_USER='fxl',
MASTER_PASSWORD='123',
MASTER_LOG_FILE='mater-bin.000001',
MASTER_LOG_POS=上一次的執行點《通常都是沒有執行的地方》;
4.$:start slave
systemd的unit
Requires: 這個單元啓動了,那麼它「須要」的單元也會被啓動; 它「須要」的單元被中止了,它本身也活不了。可是請注意,這個設定並不能控制某單元與它「須要」的單元的啓動順序(啓動順序是另外控制的),即 Systemd 不是先啓動 Requires 再啓動本單元,而是在本單元被激活時,並行啓動二者。因而會產生爭分奪秒的問題,若是 Requires 先啓動成功,那麼皆大歡喜; 若是 Requires 啓動得慢,那本單元就會失敗(Systemd 沒有自動重試)。因此爲了系統的健壯性,不建議使用這個標記,而建議使用 Wants 標記。可使用多個 Requires。
RequiresOverridable:跟 Requires 很像。可是若是這條服務是由用戶手動啓動的,那麼 RequiresOverridable 後面的服務即便啓動不成功也不報錯。跟 Requires 比增長了必定容錯性,可是你要肯定你的服務是有等待功能的。另外,若是不禁用戶手動啓動而是隨系統開機啓動,那麼依然會有 Requires 面臨的問題。
Requisite:強勢版本的 Requires。要是這裏須要的服務啓動不成功,那本單元文件無論能不能檢測等不能等待都馬上就會失敗。
Wants:推薦使用。本單元啓動了,它「想要」的單元也會被啓動。可是啓動不成功,對本單元沒有影響。
Conflicts:一個單元的啓動會中止與它「衝突」的單元,反之亦然。注意這裏和後面的啓動順序是「正交」的:
兩個相互衝突的單元被同時啓動,要麼兩個都啓動不了(二者都是第三個單元的 Requires),要麼啓動一個(有一個是第三個單元的 Requires,另外一個不是),不是 Requires 的那個會被中止。要是二者都不是任何一個單元的 Requires,那麼 Conflicts 別的那個單元優先啓動,被 Conflicts 的後啓動,要是互相寫了,那麼兩個都啓動不了。
OnFailure:很明顯,若是本單元失敗了,那麼啓動什麼單元做爲折衷。
好了,如今咱們來想象一下,咱們的單元(Ipv6 隧道)應該想要什麼呢?很顯然是一個連通着的網絡。有一個 Systemd 默認提供的對象叫作 network-online.target(默認的 target 列表可見 systemd.special,必看,由於你大多數時候 Wants 的都是一個固定的系統狀態而不是其它 systemd 服務),正正好好可以提供咱們須要的環境。因而:
[Unit]
Description=Daemon to start He.net IPv6
Wants=network-online.target
下面咱們須要定義一下服務啓動順序,否則連 / 目錄所在的硬盤都沒掛載就開始幹活,上哪兒找程序去呀。Systemd 服務啓動順序主要使用如下兩個標記定義的:
Before/After:要是一個服務 Before 另外一個服務,那麼在並行啓動時(Systemd 老是用進程 0 並行啓動全部東西,而後經過這兩個標記來二次等待排序),那另外一個服務這時就會等這個服務先啓動並返回狀態,注意是先啓動而不是啓動成功,由於失敗也是一種狀態,必定要成功才啓動另外一個服務是經過依賴關係定義的。反之 After 亦然。
下面說下「關機」(能夠是掛起,這時候有些服務是依然在跑的,好比網絡喚醒)時候的順序:若是兩個服務都是要關掉的,Before 是先關本身,After 是先關別人,這很好理解; 但若是一個服務是要關,而另外一個是要開的,那麼無論 Before/After 寫了什麼,老是優先關閉而不是開始。也就是好比服務 A Before 服務 B,可是服務 B 是在關,而服務 A 是在 restart,那麼服務 B 的順序在服務 A 的前面。
好啦,咱們的單元應該在什麼的先後啓動呢?它不須要必定在什麼服務前面跑起來,這不像 ifup 和 dhcp,網絡起不來獲取 ip 確定沒用。咱們只須要有網就能夠了。「有網」在 Systemd 中也是由一個默認 target:network.target 提供的,因而咱們的控制單元就定義好了:
[Unit]
Description=Daemon to start He.net IPv6
Wants=network-online.target
After=network.target
定義服務本體 [service]
在定義完了 Systemd 用來識別服務的單元后,咱們來定義服務本體,依然是聲明:
[Service]
而後是聲明服務類型:
[Service]
Type=
Systemd 支持的服務類型有如下幾類:
simple 默認,這是最簡單的服務類型。意思就是說啓動的程序就是主體程序,這個程序要是退出那麼一切皆休。這在圖形界面裏很是好理解,我打開 Amarok,退出它就沒有了。可是命令行的大部分程序都不會那麼設計,由於命令行的一個最基本原則就是一個好的程序不能獨佔命令行窗口。因此輸入命令,回車,接着立刻返回給你提示符,但程序已經執行了。因此只有少數程序好比 python xxx.py 還使用這種方式。在這種類型下面,若是你的主程序是要響應其它程序的,那麼你的通訊頻道應該在啓動本服務前就設好(套接字等),所以這種類型的服務,Systemd 運行它後會馬上就運行下面的服務(須要它的服務),這時沒有套接字後面的服務會失敗,寫 After 也沒用,由於 simple 類型不存在主進程退出的狀況也就不存在有返回狀態的狀況,因此它一旦啓動就認爲是成功的,除非沒起來。
forking 標準 Unix Daemon 使用的啓動方式。啓動程序後會調用 fork() 函數,把必要的通訊頻道都設置好以後父進程退出,留下守護精靈的子進程。你要是使用的這種方式,最好也指定下 PIDFILE=,不要讓 Systemd 去猜,非要猜也能夠,把 GuessMainPID 設爲 yes。
判斷是 forking 仍是 simple 類型很是簡單,命令行裏運行下你的程序,持續佔用命令行要按 Ctrl + C 才能夠的,就不會是 forking 類型。
建立 PIDFILE 是你爲它寫服務的程序的任務而不是 Systemd 的功能,甚至也不是 Sysvinit 腳本的功能。參考 startproc建立pid file的問題了解進一步的知識。所以若是你的程序確實是 forking 類型,但就是沒實現建立 PIDFILE 的功能,那麼建議使用 ExecStartPost= 結合 shell 命令來手動抓取進程編號並寫到 /var/run/xxx.pid。
oneshot 顧名思義,打一槍換一個地方。因此這種服務類型就是啓動,完成,沒進程了。常見好比你設置網絡,ifup eth0 up,就是一次性的,不存在 ifup 的子進程(forking 那樣),也不存在主進程(simple 那樣),它運行完成後便了無痕跡。由於這類服務運行完就沒進程了,咱們常常會須要 RemainAfterExit=yes。後面配置的意思是說,即便沒進程了,咱們也要 Systemd 認爲該服務是存在併成功了的。因此若是你有一個這樣的服務,服務啓動後,你再去 ifup eth0 up,這時你再看服務,依然顯示是 running 的。由於只要在執行那條一次性命令的時候沒出錯,那麼它就永遠認爲它是成功並一直存在的,直到你關閉服務。
dbus 這個程序啓動時須要獲取一塊 DBus 空間,因此須要和 BusName= 一塊兒用。只有它成功得到了 DBus 空間,依賴它的程序纔會被啓動。
通常人也就能用到上面四個,還有兩種少見的類型:
notify 這個程序在啓動完成後會經過 sd_notify 發送一個通知消息。因此還須要配合 NotifyAccess 來讓 Systemd 接收消息,後者有三個級別:none,全部消息都忽略掉; main,只接受咱們程序的主進程發過去的消息; all,咱們程序的全部進程發過去的消息都算。NotifyAccess 要是不寫的話默認是 main。
idle 這個程序要等它裏面調度的所有其它東西都跑完纔會跑它本身。好比你 ExecStart 的是個 shell 腳本,裏面可能跑了一些別的東西,若是不這樣的話,那極可能別的東西的控制檯輸出裏會多一個「啓動成功」這樣的 Systemd 消息。
因爲 He.net 的 IPv6 是用 iproute2 的 ip 命令來弄的,因此是一個 oneshot 一次性服務。
[Service]
Type=oneshot
RemainAfterExit=yes
接下來要設置 ExecStart, ExecStop。若是程序支持的話,你還能夠去設置 ExecReload,Restart 等。注意,這裏設置的是它們 Reload/Restart 的方式,但並不表明沒有它們 Systemd 就不能完成好比 systemctl restart xxx.service 這樣的任務,程序有支持天然最好,程序不支持那就先 stop 再 start 咯。一樣有特殊要求的時候你也能夠去設置好比 ExecStartPre/ExecStartPost,RestartSec,TimeoutSec 等其它東西,參考連接裏都有使用方法。
這裏要特殊講一下 ExecStart:
若是你服務的類型不是 oneshot,那麼它只能夠接受一個命令,參數不限,好比你先 ip tunnel create 再 ip tunnel0 up,那是兩個 ip 命令,若是你不是 oneshot 類型這樣是不行的。
若是有多條命令(oneshot 類型),命令之間以分號 ; 分隔,跨行可用反斜槓 \。
除非你的服務類型是 forking,不然你在這裏輸入的命令都會被認爲是主進程,無論它是否是。
因而咱們的 [Service] 就寫好了:
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/sbin/ip tunnel add he-ipv6 mode sit remote 66.220.18.42 local 108.170.7.158 ttl 255 ; \
/usr/sbin/ip link set he-ipv6 up ; \
/usr/sbin/ip addr add 2001:470:c:1184::2/64 dev he-ipv6 ; \
/usr/sbin/ip route add ::/0 dev he-ipv6 ; \
/usr/sbin/ip -6 addr
ExecStop=/usr/sbin/ip route delete ::/0 dev he-ipv6 ; \
/usr/sbin/ip -6 addr del 2001:470:c:1184::2/64 dev he-ipv6 ; \
/usr/sbin/ip link set he-ipv6 down ; \
/usr/sbin/ip tunnel del he-ipv6
安裝服務 [install]
這可能有點繞,我服務文件都弄好了,放到 /etc/systemd/system(供系統管理員和用戶使用),/usr/lib/systemd/system(供發行版打包者使用)了,不就是安裝好了嘛。
這裏說的是一種內部狀態,默認你放對位置它顯示的是 disabled,unloaded,因此咱們要在 Systemd 內部對它進行一下 load,沒人要的東西是不須要安裝的(咱們不收渣渣),因此咱們要告訴 Systemd 它是有人要的,被誰要。通常都是被
[Install]
WantedBy=multi-user.target
要(multi-user.target 表示多用戶系統好了,簡單理解就是你能夠登入了)。這樣在 multi-user.target 啓用時,咱們的服務也就會被啓用了。
[Install] 部分下除了 WantedBy 還有兩種屬性,分別是:
Alias= 給你本身的別名,這樣 systemctl command xxx.service 的時候就能夠不輸入完整的單元名稱。好比你給 NetworkManager 一個別名叫 Alias=nm,那你就能夠 systemctl status nm.service 查看實際是 NetworkManager.service 的服務了。
Also= 安裝本服務的時候還要安裝別的什麼服務。好比咱們的 He.net 腳本按理應該須要一個 iproute2.service 做爲 also,可是 iproute2 實際上不須要 systemd 控制,因此就沒寫。它和 [Unit] 定義裏面的依賴關係相比,它管理的不是運行時依賴,而是安裝時。安裝好了以後啓動誰先誰後,誰依賴誰,和 Also= 都沒有關係。
mysql的systemd腳本
使用sysV腳本:
1.cp mysql目錄/support-files/mysql.server /etc/init.d/mysql.server
2.修改mysql.server的 basedir 和datadir(若是不是安裝在/user/local/mysql)
3.chkconfig --add mysql.server
4.chkconfig --level 2345 mysql.server on
linux開啓FTP
1.查詢是否安裝 ftp
$:which vsftpd (yum list installed vsftpd)
2.安裝
$:yum install vsftpd
3.開啓
$: service vsftpd start
4.加入到開機啓動(sysV)
$:chkconfig --add vsftpd
$:chkconfig --level 2345 vsftpd
(
5.vsftpd的三個主配置文件
/etc/vsftpd.conf //服務器的主配置文件
/etc/ftpd.ftpusers //此文件內的用戶都不能訪問vsftpd服務器
/etc/vsftpd.user_list //可能會被拒絕訪問服務喊叫或容許訪問
6.vsftpd.conf的配置參數
anonymous_enable=YES //啓用匿名用戶
local_enable=YES //容許本地用戶訪問vsftpd服務器
write_enable=YES //容許上傳
download_enable=YES //容許下載
anon_upload_enable=YES //容許匿名用戶上傳
anon_mkdir_write_enable=YES //容許匿名用戶建立目錄和上傳
anon_other_write_enable=NO //不容許匿名用戶刪除和更名
local_max_rate=20000 //本地用戶的最大傳輸速率,單位是字節/秒
anon_max_rate=5000 //匿名用戶的最大傳輸速率,單位是字節/秒
local_umask=022 //去掉寫的權限
file_open_mode=0666 //上傳文件的權限
xferlog_enable=YES //維護日誌文件,詳細記錄上傳和下載操做
xferlog_std_format=YES //傳輸日誌文件將以標準的xferlog格式書寫,日誌文件默
認爲/var/log/xferlog
hide_ids=YES //隱藏文件夾和目錄屬主
port_enable=YES //容許使用主動傳輸模式
pasv_min_port=(1024<port<65535) //指定PASV模式可使用的最小端口
pasv_max_port=(1024<port<65535) //指定PASV模式可使用的最大端口
connect_from_port_20=YES //定義FTP傳輸數據的端口,默認是20
ascii_download_enable=NO //設置不可以使用ASCII模式下載
listen=YES //讓FTP工做在獨立模式下
pam_service_name=vsftpd //用戶配置文件認證
userlist_enable=YES
tcp_wrappers=YES //將使用wrappers做爲主機訪問控制方式
idle_session_timeout=600 //代表空閒時間爲600秒
data_connection_timeout=120 //代表數據鏈接超時時間爲120秒
chroot_local_user=YES //用戶登陸後不能訪問本身目錄之外的文件或目錄
listen_port=4444 //修改FTP服務器的端口號
)