發表文章

目前顯示的是 2015的文章

MySQL Fabric 安裝及配置

圖片
Fabric相關軟體需求 MySQL Server 5.6.17 or later Python2 (2.6 or later) Connector/Pythone 1.2.1 or later Connector/J 5.1.27 or later 安裝mysql fabric (utilities) TAR包安裝 (本次使用版本為mysql-utilities 1.6) unzip mysql-utilities-version.zip cd mysql-utilities-version python ./setup.py build python ./setup.py install RPM安裝 rpm -ivh mysql-utilities-version-el6.noarch.rpm 安裝和啟動資料庫(Backing store和user database) ((安裝過程不再贅述)) 建立使用者及設定權限 需要4種角色:Backing store user、Server user、 Backup and Restore user Backing store就是用在Fabric Server的那個資料庫,Server即使用者資料庫,我個人認為Backup和Restore可以使用同一個使用者即可 Backing Store User: CREATE USER 'fabric_store'@'localhost' IDENTIFIED BY 'password'; GRANT ALTER, CREATE, CREATE VIEW, DELETE, DROP, EVENT, INDEX, INSERT, REFERENCES, SELECT, UPDATE ON fabric.* TO 'fabric_store'@'localhost'; Server User:(這個使用者在故障轉移時會用到) CREATE USER 'fabric_server'@'localhost' IDENTIFIED BY 'password'; GRANT DELETE, PROCESS, RELOAD, REPLICATION CLIEN

MySQL Fabric 設定檔說明

fabric.cfg設定檔區塊說明: [default] #預設區塊,通常放安裝路徑的資訊 prefix =  /usr #安裝路徑,RPM裝的就指到/usr sysconfdir = /usr/etc #系統設定檔的位置,通常是在prefix下的etc中 logdir =   /var/log/fabric.log #log目錄 [storage] #Fabric backing store,存放fabric中所有群組設定的資料庫 address = 127.0.0.1:3306 #backing store的位置 user = password = database = #backing store的資料庫名稱,通常都會叫fabric auth_plugin = #connector連到backing store的驗證套件(可不使用) connection_timeout = #connector最大等待多少秒後會timeout connect_attempts = #重新連線的次數,超過這個次數就不會自動重新連 connection_delay = #多少秒重新連線一次 [servers] #被管理伺服器 user = password = backup_user = backup_password = restore_user = restore_password = unreachable_timeout = #用來檢查故障或新伺服器的timeout時間,預設是5,可設範圍1-60 [protocol.xmlrpc] #定議終端如何通過XML-RPC協定連線到Fabric節點 address = 127.0.0.1:32274 #XML-RPC伺服器,即connector連到Fabric的這段 threads = #連線數,這決定了Fabric並發請求的連線數 user = password = #如果這裡沒有設定密碼,在連線時會需要另外輸入密碼 disable_authentication = yes #是否不允許身份驗證 realm =MySQL Fabric #XML-RPC伺服器驗證時的識別碼 ssl_ca = #SSL認證機構路徑 ssl_cert = #SSL認證文件

MySQL Cluster Replication With MySQL Cluster and non-NDB

圖片
環境介紹 因為筆電的空間和RAM有限,僅能在3台VM上來建置所有的場景    VM配置:   (3台環境資源配置均相同就不分開寫了)    hostname-> IP Address   ol65-> 192.168.56.101    ol65-cluster1->  192.168.56.103    ol65-cluster2-> 192.168.56.104 :   OS: Oracle Linux 6.5   RAM: 4G   mysql-5.6.19-ndb-7.3.6-cluster-commercial-advanced   mysql-5.6.21-enterprise-commercial-advanced (這只有在192.168.56.101)       第一座MySQL cluster:   mgm_node: 192.168.56.101:1186   data_node_1: 192.168.56.103:50501   data_node_2: 192.168.56.104:50502   sql_node_1: 192.168.56.103:3306   sql_node_2: 192.168.56.104:3306    第二座MySQL cluster:   slave_mgm: 192.168.56.101:1188   slave_data_1: 192.168.56.103:50503   slave_data_2: 192.168.56.104:50504   slave_sql_1: 192.168.56.103:3306   slave_sql_2: 192.168.56.104:3306    MySQL Server   slave: 192.168.56.101:3306 架構 MySQL Cluster Replication with MySQL Cluster MySQL Cluster Replication with non-NDB 前置設定 Table schema:   在Slave的mysql資料庫中新建此表,這個表是用來記錄已經從

MySQL PAM Plugin設定

圖片
安裝 在my.cnf中設定後重開: [mysqld] plugin-load=authentication_pam.so 在Linux中設定 在/etc/pam.d中新增一個文件,名稱與服務相同(若服務為mysql檔名就叫mysql,若叫mysqld就叫mysqld) vim /etc/pam.d/mysql #%PAM-1.0 auth include password-auth account include password-auth 使用PAM來登入MySQL 如果可以讓使用都屬在mysql的群組中,不行的話就要透過proxy來mapping使用者 mysql> create user 'wang'@'127.0.0.1' IDENTIFIED WITH authentication_pam as 'mysql';      ^^^後面as 'mysql'這個就是pam.d裡面設的那個檔案名稱 記得權限要另外設定 除錯 登入時一直出現ERROR 1045 (28000): Access denied for user 'wang'@'127.0.0.1' (using password: YES),在/var/log/security中記錄: Jun 18 19:23:31 ol65 unix_chkpwd[7097]: check pass; user unknown Jun 18 19:23:31 ol65 unix_chkpwd[7099]: check pass; user unknown Jun 18 19:23:31 ol65 unix_chkpwd[7099]: password check failed for user (wang) Jun 18 19:23:31 ol65 mysqld: pam_unix(mysql:auth): authentication failure; logname= uid=496 euid=496 tty= ruser=wang rhost=127.0.0.1 

MySQL Eneterprise Firewall安裝、使用

圖片
安裝 注意事項 一旦安裝了就會對資料庫效能產生最小呈度的影響,就算是安裝了沒啟用也是一樣 它無法與Query Cache同時使用,如果有用Query Cache請記得在安裝Firewall前先關閉Query Cache # ./bin/mysql -uroot -proot -h127.0.0.1 -P3322 mysql< share/linux_install_firewall.sql 安裝時同時會在資料庫裡面安裝幾個元件 INFORMATION_SCHEMA.MYSQL_FIREWALL_WHITELIST INFORMATION_SCHEMA.MYSQL_FIREWALL_USERS mysql.firewall_users mysql.firewall_whitelist sp_set_firewall_mode() ->store procedure 檢查是否有啟用 mysql> SHOW GLOBAL VARIABLES LIKE 'mysql_firewall_mode'; 使用Firewall 剛開始啟用時,要先把使用者註冊到INFORMATION_SCHEMA.MYSQL_FIREWALL_USERS裡面,然後再啟用RECORDING模式來記錄平常這個使用者會有哪些操作,這個操作指令會被記錄在INFORMATION_SCHEMA.MYSQL_FIREWALL_WHITELIST,記錄之後就可以把它開成PROTECTING模式,它會將記錄之外的操作給排除掉,並且資料庫裡面會記錄被DENIED的有多少、被授權的有多少…等資訊。 參考網站:http://dev.mysql.com/doc/refman/5.6/en/firewall-usage.html 建立使用者(若已有使用者就不需要) 透過sp_set_firewall_mode()的預存程式來進行註冊 mysql> CALL mysql.sp_set_firewall_mode('fwuser@localhost', 'RECORDING'); 切換剛剛註冊的使用者進行記錄操作 ./bin/mysql -uf

MySQL JSON測試

圖片
1. 建立資料表 如同一般資料表般,只需要將資料類型指定為"json"即可 CREATE TABLE `j_t` ( `no` int(11) NOT NULL AUTO_INCREMENT, `document` json DEFAULT NULL,  PRIMARY KEY (`no`) ) ENGINE=InnoDB; 2. 新增資料 insert into j_t values(0,'{"id":221, "name":"Joe Yu"}'); insert into j_t values(0,'{"id":8891, "name":"Janne", "mobile":"00-1110-2222", "Address": "Taiwan, Taipei"}'); 3. 其他操作 .一般查詢 .jsn_extract():可以針對json中的特定欄位查詢 .jsn_insert():針對條件新增資料 .jsn_remove():移除某個欄位 .jsn_set():類似於jsn_insert,如果欄位不存在將會新增,若欄位存在則更新內容,如果不想影響其他筆資料則可以下where條件來指定資料 .jsn_replace():只會對符合條件的資料進行更新 .jsn_append():將資料附加到array的後面 .jsn_merge():可以把幾個陣列資料透過jsn_array()合在一起後放入一個陣列中 .透過json中的欄位建index .jsn_length():json欄位的長度 .jsn_depth():json欄位的深度,單純key-value深度即是2,若還有陣列在value裡深度就會是3 .jsn_keys():意即該json欄位中有多個key  .jsn_contains_path():查詢元素存在於哪些資料路徑當中,在下圖的範例中我查詢"mobile&quo