Centos7搭建Mysql-5.6.38,及主從複製。

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);

主庫插入數據完畢後在從庫查看,是否有數據,若是有數據則主從同步成功。

相關文章
相關標籤/搜索