CentOS6.7安裝mysql5.7.18
1、 解壓到/usr/local目錄
# tar -zxvf mysql-5.7.18-linux-glibc2.5-i686.tar.gz -C /usr/local
2、 mysql-5.7.18-linux-glibc2.5-i686文件夾重命名為mysql
# cd /usr/local
# mv mysql-5.7.18-linux-glibc2.5-i686/ mysql
3、 新建mysql用戶組和mysql用戶
# groupadd mysql
# useradd -r -g mysql mysql
4、 新建數據目錄
# cd /usr/local/mysql
# mkdir data
5、 更改所有者以及授權755
# cd /usr/local
# chown -R mysql:mysql mysql/
# chmod -R 755 mysql/
6、 初始化mysqld
# cd /usr/local/mysql
# ./bin/mysqld --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --initialize
記錄下root的初始密碼: GjlI08>p4kDw
7、 將mysqld添加成服務,並啟動它
# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
建立mysql默認的配置文件/etc/my.cnf,並添加圖片中內容
# vim /etc/my.cnf
保存並退出my.cnf,啟動mysqld
# service mysqld start
出現如下信息表示啟動成功
查看mysql是否啟動成功
# ps -ef|grep mysql
出現如下信息表示啟動成功
當然也可以查看mysqld的狀態
# service mysqld status
8、 登錄mysql並修改root密碼
# cd /usr/local/mysql
# ./bin/mysql -uroot –p
輸入初始密碼,步驟6中有生成,出現如下信息表示登錄成功
修改root密碼
mysql> SET PASSWORD = PASSWORD('123456');
mysql> FLUSH PRIVILEGES;
初次登錄沒有修改root的密碼,操作數據庫會出現如下錯誤提示,那么需要修改root用戶的密碼
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
9、 設置mysql遠程可訪問(前提是防火牆必須關閉,chkconfig iptables off:設置自動啟動為關閉,service iptables stop:關閉防火牆)
先登錄到mysql
mysql> use mysql
mysql> update user set host = '192.168.0.4' where user = 'root';
mysql> FLUSH PRIVILEGES;
192.168.0.4即是可遠程訪問本地mysql的遠程ip,若想任意ip都能訪問本地mysql,那么只需要將192.168.0.4換成%即可
mysql> update user set host = '%' where user = 'root';
mysql主從復制
windows上mysql做master,linux上mysql做slave,mysql版本是5.7.18;windows的ip為192.168.0.4,linux的ip為192.168.0.223
1、master上開啟binlog日志
在mysql的home目錄找到my.ini文件(沒有則新建),配置上如下內容
[mysqld] # set basedir to your installation path basedir=D:\\mysql-5.7.18 # set datadir to the location of your data directory datadir=D:\\mysql-5.7.18\\data port = 3306
log-bin = mysql-bin #[必須]啟用二進制日志 server-id = 4 #[必須]服務器唯一ID,默認是1,最好取ip的后3位 expire-logs-days = 7 #只保留7天的二進制日志,以防磁盤被日志占滿 binlog-ignore-db = mysql #不備份的數據庫 binlog-ignore-db = information_schema binlog-ignore-db = performation_schema binlog-ignore-db = sys binlog-do-db=mybatis #需要做復制的數據庫名
測試log_bin是否成功開啟
mysql> show variables like '%log_bin%';
出現下圖,log_bin為ON則表示開啟成功,OFF表示開啟失敗
2、master的數據庫中建立備份賬號:backup為用戶名,%表示任何遠程地址,如下表示密碼為1234的任何遠程地址的backup都可以連接master主機
mysql> grant replication slave on *.* to 'backup'@'%' identified by '1234';
mysql> use mysql
mysql> select user,authentication_string,host from user;
可看到我們剛創建的備份賬號:
3、拷貝數據
重啟MySQL服務並設置讀取鎖定
net stop MySQL
net start MySQL
登錄mysql
mysql> flush tables with read lock;
讀取鎖定的意思是只能讀取,不能更新,以便獲得一個一致性的快照
查看主服務器上當前的二進制日志名和偏移量值
mysql> show master status \G
復制的過程如下:
File表示實現復制功能的日志,即上圖中的Binary log;Position則表示binlog日志文件的偏移量之后的都會同步到slave中,那么在偏移量之前的則需要我們手動導入
從master導出數據,然后導入到slave中
另外開一個命令窗口,用mysqldump命令進行數據的導出
將d:\a.txt拷貝到slave上,然后導入到mysql數據庫中,slave上的mybatis數據庫不存在則先創建,然后再導入
導出是mysqldump,導入是mysql
4、配置slave(192.168.0.223)
slave是linux環境,mysql的配置文件是/etc/my.cnf,不存在則新建,配上如下內容
[mysqld] basedir=/usr/local/mysql datadir=/usr/local/mysql/data socket=/tmp/mysql.sock user=mysql port=3306 log-bin=mysql-bin server-id=223
重啟slave數據庫
# service mysqld restart
登錄slave數據庫,並做如下設置
mysql> stop slave;
mysql> change master to
master_host='192.168.0.4',
master_user='backup',
master_password='1234',
master_log_file='mysql-bin.000005',
master_log_pos=601;
各個參數含義:
master_host 實現復制的主機的IP地址
master_user 實現復制的遠程登錄master的mysql的用戶,在步驟2有設置
master_password 實現復制的遠程登錄master的mysql的面,在步驟2有設置
master_log_file 實現復制的binlog日志文件 在步驟3標紅的框框中
master_log_pos 實現復制的binlog日志文件的偏移量 在步驟3標紅的框框中
mysql> start slave;
查看slave從機的狀態
mysql> show slave status \G
若圖中標記的那兩項的值為Yes,則表示slave設置成功
5、關閉掉主數據庫的讀取鎖定
mysql> unlock tables;
6、測試
前面沒出問題的話,那么master上的數據操作都會同步到slave上