主從配置 - 主上操做
- 安裝mysql
- 修改my.cnf,增長server-id=130和log_bin=aminglinux1
- 修改完配置文件後,啓動或者重啓mysqld服務
- 把mysql庫備份並恢復成aming庫,做爲測試數據
- mysqldump -uroot mysql > /tmp/mysql.sql
- mysql -uroot -e 「create database aming」
- mysql -uroot aming < /tmp/mysql.sql
- 建立用做同步數據的用戶
- grant replication slave on . to 'repl'@slave_ip identified by 'password';
- flush tables with read lock;
- show master status;
主從配置 - 主上操做
- 在兩臺機器安裝並啓動mysql服務後,首先在主上進行操做
- 修改/etc/mys.cnf配置文件
- 在配置文件下[mysqld]下添加
- server-id=130 這個id能夠自定義,這裏根據ip來定義
- log_bin=hf123 打開binlog,名字自定義爲log_bin=hf123 最終以下
[root@hanfeng ~]# vim /etc/my.cnf
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html
# *** DO NOT EDIT THIS FILE. It's a template which will be copied to the
# *** default location during install, and will be replaced if you
# *** upgrade to a newer version of MySQL.
[mysqld]
server_id = 130
log_bin=hf123
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
# These are commonly set, remove the # and set as required.
# basedir = .....
# datadir = .....
# port = .....
# server_id = .....
# socket = .....
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
保存退出
- 更改完配置文件後,須要重啓mysql
- /etc/init.d/mysqld restart
[root@hanfeng ~]# /etc/init.d/mysqld restart
Shutting down MySQL.... SUCCESS!
Starting MySQL.. SUCCESS!
[root@hanfeng ~]#
- 這時候來/data/mysql/目錄下,會生成一些文件
[root@hanfeng ~]# ls -lt /data/mysql/
總用量 110728
-rw-rw----. 1 mysql mysql 50331648 1月 19 23:35 ib_logfile0
-rw-rw----. 1 mysql mysql 12582912 1月 19 23:35 ibdata1
-rw-rw----. 1 mysql mysql 104317 1月 19 23:35 hanfeng.err
-rw-rw----. 1 mysql mysql 5 1月 19 23:35 hanfeng.pid
-rw-rw----. 1 mysql mysql 15 1月 19 23:35 hf123.index
-rw-rw----. 1 mysql mysql 120 1月 19 23:35 hf123.000001
drwx------. 2 mysql mysql 4096 1月 19 20:58 zrlog
-rw-rw----. 1 mysql mysql 56 1月 2 22:41 auto.cnf
drwx------. 2 mysql mysql 4096 1月 2 22:28 mysql
drwx------. 2 mysql mysql 4096 1月 2 22:28 performance_schema
-rw-rw----. 1 mysql mysql 50331648 1月 2 22:28 ib_logfile1
drwx------. 2 mysql mysql 6 1月 2 22:26 test
[root@hanfeng ~]#
- 其中 .index 索引頁,這個文件是必需要有的
- 其中 .000001 這個是二進制日誌文件,會持續生成二、三、4等等(這個文件是實現主從配置的根本,沒有這個文件根本沒有辦法完成主從)
- 測試,準備一個數據作演示用的
- 首先作一個備份
- mysqldump -uroot -phanfeng zrlog > /tmp/zrlog.sql
[root@hanfeng ~]# mysqldump -uroot -phanfeng zrlog > /tmp/zrlog.sql
Warning: Using a password on the command line interface can be insecure.
[root@hanfeng ~]#
- 而後建立一個新的庫
- mysql -uroot -phanfeng -e "create database han"
[root@hanfeng ~]# mysql -uroot -phanfeng -e "create database han"
Warning: Using a password on the command line interface can be insecure.
[root@hanfeng ~]#
- 建立好庫後,還須要把數據恢復一下,那也就是說作的主從,參考的對象就是 han 這個庫
- mysql -uroot -phanfeng han < /tmp/zrlog.sql
[root@hanfeng ~]# mysql -uroot -phanfeng han < /tmp/zrlog.sql
Warning: Using a password on the command line interface can be insecure.
[root@hanfeng ~]#
- 再來查看/data/mysql/目錄下的文件
[root@hanfeng ~]# ls -lt /data/mysql/
總用量 110740
-rw-rw----. 1 mysql mysql 50331648 1月 19 23:40 ib_logfile0
-rw-rw----. 1 mysql mysql 12582912 1月 19 23:40 ibdata1
-rw-rw----. 1 mysql mysql 10337 1月 19 23:40 hf123.000001
drwx------. 2 mysql mysql 4096 1月 19 23:40 han
-rw-rw----. 1 mysql mysql 104317 1月 19 23:35 hanfeng.err
-rw-rw----. 1 mysql mysql 5 1月 19 23:35 hanfeng.pid
-rw-rw----. 1 mysql mysql 15 1月 19 23:35 hf123.index
drwx------. 2 mysql mysql 4096 1月 19 20:58 zrlog
-rw-rw----. 1 mysql mysql 56 1月 2 22:41 auto.cnf
drwx------. 2 mysql mysql 4096 1月 2 22:28 mysql
drwx------. 2 mysql mysql 4096 1月 2 22:28 performance_schema
-rw-rw----. 1 mysql mysql 50331648 1月 2 22:28 ib_logfile1
drwx------. 2 mysql mysql 6 1月 2 22:26 test
[root@hanfeng ~]#
- 能看到hf123.000001二進制文件是有增長的,hf123.000001增加的大小是和zrlog這個庫的保持一致的,hf123.000001文件裏完整的記錄了數據庫的建立的庫,建立的表,以及表裏的內容全都有
- 下面建立用於主從相互同步數據的用戶
- 先進入到mysql裏面去
[root@hanfeng ~]# mysql -uroot -phanfeng
Warning: Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 194
Server version: 5.6.35-log MySQL Community Server (GPL)
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
- 建立用戶
- grant replication slave on . to 'repl'@'192.168.202.131' identified by 'hanfeng';
- 指定權限,replication slave權限
- 針對repl這個用戶
- 針對 從 的那個IP,指定來源(如果寫全部的IP會很危險)
mysql> grant replication slave on *.* to 'repl'@'192.168.202.131' identified by 'hanfeng';
Query OK, 0 rows affected (0.00 sec)
mysql>
- 鎖定表,目的是不讓表繼續寫,由於一會須要作 從 機器配置,須要進行一個同步,讓兩臺機器同步,保證兩臺機器的數據一致,同步纔不會出錯
- flush tables with read lock;
mysql> flush tables with read lock;
Query OK, 0 rows affected (0.00 sec)
mysql>
- 查看一下binlog的文件和大小,並記住binlog的filename
mysql> show master status;
+--------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+--------------+----------+--------------+------------------+-------------------+
| hf123.000001 | 10549 | | | |
+--------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
mysql> quit
Bye
- 而後退出數據庫,作一個數據同步
- 查看/data/mysql/下有哪些庫,主上有哪些庫,一會從上也得有哪些庫,同步這些庫,就意味着這些數據都得備份過去
[root@hanfeng ~]# ls /data/mysql
auto.cnf hanfeng.err hf123.000001 ibdata1 ib_logfile1 performance_schema zrlog
han hanfeng.pid hf123.index ib_logfile0 mysql test
[root@hanfeng ~]#
- 備份數據庫,除了mysql庫,由於mysql庫裏面有帳號密碼,從上的時候不可能把全部權限複製過去,因此mysql不須要備份
[root@hanfeng ~]# mysqldump -uroot -phanfeng test > /tmp/test.sql
Warning: Using a password on the command line interface can be insecure.
[root@hanfeng ~]#
- 等會把/tmp/目錄下 .sql文件都拷貝到 從上 去
[root@hanfeng ~]# ls /tmp/*sql
/tmp/test.sql /tmp/zrlog.sql
[root@hanfeng ~]#
- 主上操做完成,接下來從上操做