Server1:192.168.1.189 (主)mysql
Server2:192.168.1.190 (從)c++
一、關閉默認的firewalld防火牆,安裝iptables。git
systemctl disable firewalldsql
安裝iptables數據庫
yum -y install iptables*服務器
並設置iptables開機自啓動socket
二、開始安裝mysql-5.6.38ide
檢查是否默認安裝了mysql及mariadb,默認安裝了就卸載掉。ui
安裝相關依賴包。線程
yum -y install cmake bison git ncurses-devel gcc gcc-c++
添加一個mysql使用的用戶。
下載mysql-5.6.38.tar
wget https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.38.tar.gz
解壓下載好的軟件包。
tar -zxvf mysql-5.6.38.tar.gz
建立數據目錄及安裝目錄。
mkdir -p /usr/local/mysql
mkdir -p /usr/local/mysql/data
查找一下是否有這個文件CMakeCache.txt,有的話就刪除。
find / -name CMakeCache.txt
進入解壓包進行安裝,路徑根據本身服務器狀況進行指定。
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql_3306.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DMYSQL_DATADIR=/usr/local/mysql/data -DMYSQL_TCP_PORT=3306 -DMYSQL_USER=mysql -DENABLE_DOWNLOADS=1
檢查一下是否有錯,若返回值不爲0就有錯誤
進行make編譯安裝,編譯時間較長。
make && make install
安裝完成後建立日誌須要的目錄
mkdir -p /usr/local/mysql/log/errlog/ #錯誤日誌目錄
mkdir -p /usr/local/mysql/log/binlog/ #log-bin日誌目錄
mkdir -p /usr/local/mysql/log/slowlog/ #慢查詢日誌目錄
修改目錄的屬主屬組,及權限。
chown -R mysql:mysql /usr/local/mysql
chown -R mysql:mysql /usr/local/mysql/*
設置可讀可寫權限。
建立mysql-sever系統表。
cd /usr/local/mysql/
./scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysql/data
報錯了須要Perl的依賴
而後在執行上面的語句就行了。
將配置文件移動到/etc下,配置問價你的默認路徑。
根據您公司環境,及服務器進行配置)
主配置my.cnf
[client]
#password=your_password
port=3306
socket=/usr/local/mysql/mysql_3306.sock
default-character-set=UTF8
[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port=3306
socket=/usr/local/mysql/mysql_3306.sock
#[mysqld_safe]
log-error=/usr/local/mysql/log/errlog/error.log
pid-file=/usr/local/mysql/mysql.pid
user=mysql
tmpdir=/tmp
skip-name-resolve
skip-external-locking
lower_case_table_names=1
server_id=1
binlog_format=row
log_bin_trust_function_creators=1
log_bin=/usr/local/mysql/log/binlog/mysql-bin
log-slave-updates
#設置log-bin日誌刪除30以前的,不刪除會產生很大的日誌
expire_logs_days=30
key_buffer_size=4024M
max_allowed_packet=256M
max_heap_table_size=256M
tmp_table_size=256M
sort_buffer_size=128K
read_buffer_size=4M
read_rnd_buffer_size=8M
myisam_sort_buffer_size=64M
thread_cache_size=64
query_cache_size=64M
max_connections=1000
max_connect_errors=1024
##鏈接超時##
wait_timeout=172800
interactive_timeout=172800
table_open_cache = 400
expire_logs_days=10
innodb_buffer_pool_size=2G
innodb_file_per_table=1
innodb_log_buffer_size=32M
innodb_open_files=800
sync_binlog=0
#打開慢查詢日誌功能
slow_query_log = 1
#超過2秒的查詢記錄下來
long_query_time = 2
##記錄下沒有使用索引的查詢
log_queries_not_using_indexes = 0
slow_query_log_file=/usr/local/mysql/log/slowlog/slowquery.log
[mysqldump]
quick
max_allowed_packet = 16M
[mysql]
[isamchk]
key_buffer_size = 128M
sort_buffer_size = 128K
[myisamchk]
key_buffer = 128M
sort_buffer_size = 128K
配置啓動腳本。
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
在安裝路徑下先關閉一下mysql在啓動。
bin/mysqld stop
啓動mysql
軟鏈接mysql使用mysql –uroot –p直接登錄。
ln -s /usr/local/mysql/bin/mysql /usr/sbin/mysql
登錄mysql
mysql -u root –p ###密碼爲空,回車進入
設置密碼
use mysql;
update user set password=PASSWORD('123.com') where user='root';
受權遠程登錄。
grant all privileges no *.* to root@」%」 identified by 「123.com」;
從服務器搭建:
從服務器基本的一些配置跟上面同樣,除了目錄不同,用於區分主從。
安裝目錄
mkdir -p /usr/local/mysqlslave
mkdir -p /usr/local/mysqlslave/data
從服務器的cmake配置
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysqlslave -DMYSQL_UNIX_ADDR=/usr/local/mysqlslave/mysql_3306.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DMYSQL_DATADIR=/usr/local/mysqlslave/data -DMYSQL_TCP_PORT=3306 -DMYSQL_USER=mysql -DENABLE_DOWNLOADS=1
建立從數據庫的日誌目錄,跟主不同因此我體如今word
/usr/local/mysqlslave/log/errlog/ #錯誤日誌
/usr/local/mysqlslave/log/binlog/ #log-bin日誌
/usr/local/mysqlslave/log/relaylog/ # 中繼日誌
/usr/local/mysqlslave/log/slowlog/ #慢查詢日誌
受權目錄
chown -R mysql:mysql /usr/local/mysqlslave
chown -R mysql:mysql /usr/local/mysqlslave/*
chmod 777 -R /usr/local/mysqlslave
chmod 777 -R /usr/local/mysqlslave/*
建立mysql-server表
cd /usr/local/mysqlslave/
./scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysqlslave/data
報錯了,缺乏perl,安裝一個依賴就行了,再次執行。
再次執行就行了。
從同樣的,將my.cnf移動到/etc下面,進行配置。
(根據您公司環境,及需求進行配置)
從配置。Vim /etc/my.cnf
[client]
#password = your_password
port=3306
socket=/usr/local/mysqlslave/mysql_3306.sock
default-character-set=UTF8
## The MySQL server
[mysqld]
port=3306
basedir=/usr/local/mysqlslave/
socket=/usr/local/mysqlslave/mysql_3306.sock
datadir=/usr/local/mysqlslave/data
log-error=/usr/local/mysqlslave/log/errlog/error.log
pid-file=/usr/local/mysqlslave/mysql.pid
user=mysql #此處爲mysql源碼安裝的系統用戶名
tmpdir=/tmp
##log_timestamps = SYSTEM
##explicit_defaults_for_timestamp=1
skip-name-resolve
skip-external-locking
lower_case_table_names=1
server_id=2
binlog_format=row
log_bin_trust_function_creators=1
log_bin=/usr/local/mysqlslave/log/binlog/mysql-bin
log-slave-updates
##設置log-bin日誌刪除30以前的,不刪除會產生很大的日誌
expire_logs_days=30
### relay_log配置中繼日誌
relay_log=/usr/local/mysqlslave/log/relaylog/mysql-relay-bin
#
key_buffer_size=4024M
max_allowed_packet=256M
max_heap_table_size=256M
tmp_table_size=256M
sort_buffer_size=128K
read_buffer_size=4M
read_rnd_buffer_size=8M
myisam_sort_buffer_size=64M
thread_cache_size=64
query_cache_size=64M
max_connections=1000
max_connect_errors=1024
wait_timeout=172800
interactive_timeout=172800
table_open_cache=400
expire_logs_days=10
innodb_buffer_pool_size=2G
innodb_file_per_table=1
innodb_log_buffer_size=32M
innodb_open_files=800
sync_binlog=0
## 打開慢查詢日誌功能
slow_query_log=1
## 超過2秒的查詢記錄下來
long_query_time=2
## 記錄下沒有使用索引的查詢
log_queries_not_using_indexes=0
slow_query_log_file=/usr/local/mysqlslave/log/slowlog/slowquery.log
[mysqldump]
quick
max_allowed_packet=16M
[mysql]
[isamchk]
key_buffer_size=128M
sort_buffer_size=128K
[myisamchk]
key_buffer=128M
sort_buffer_size=128K
##[mysqlhotcopy]
##interactive_timeout
先關閉一下數據庫,在啓動
配置啓動腳本。
cp /usr/local/mysqlslave/support-files/mysql.server /etc/init.d/mysqld
軟鏈接mysql使用mysql –uroot –p直接登錄。
ln -s /usr/local/mysqlslave/bin/mysql /usr/sbin/mysql
啓動mysql
配置主從
主my.cnf配置
Server-id,master務器不能跟slave服務器的id同樣。
Bin-log日誌的路徑指定,要有寫入權限。
修改從的my.cnf配置
在主庫(master)中建立一個用戶用於與從庫同步的用戶名和密碼(這裏我建立一個slave_user用戶,密碼爲123.COM!),並給slave_user用戶受權,以用於主庫操做從庫。
create user "slave_user"@"192.168.1.190" identified by "123.COM!";
grant replication slave on *.* to 'slave_user'@'192.168.1.190';
flush privileges;
select host from mysql.user; #查看用戶是否建立成功
查看master(主)狀態
show master status;
這裏的mysql-bin.000002,和Position值526,slave配置的時候會用到。
導出master的數據到從服務器去,讓數據一致。
將數據上傳至slave服務器。
在slave(從)數據庫導入主服務器的數據。
配置slave,讓其主從同步。
mysql> change master to
-> master_host='192.168.1.189',
-> master_user='slave_user',
-> master_password='123.COM!',
-> master_log_file='mysql-bin.000002',
-> master_log_pos=526,
-> MASTER_CONNECT_RETRY=10;
##關於MASTER_CONNECT_RETRY,在主服務器宕機的狀況下,從服務器線程從新嘗試鏈接主服務器以前睡眠的秒數。若是主服務器.Info文件中的值能夠讀取則優先使用,若是未設置,默認爲60秒。
啓動slave
start slave;
##關閉命令stop slave
##重啓命令reset slave
查看slave的狀態。
show slave status \G
只要Slave_IO_Running: Yes, Slave_SQL_Running: Yes,主從就搭建成功。若其中一項不爲yes,查看mysql的錯誤日誌。
在主數據庫建立一個庫,看看是否同步。
create database testdb;
use testdb;
create table book(
-> id int(10),
-> name varchar(15),
-> size int);
insert into book (id,name,size) values(1,"test",100);
主庫插入數據完畢後在從庫查看,是否有數據,若是有數據則主從同步成功。