1. 程式人生 > >安裝、配置MySQL

安裝、配置MySQL

cal p12 database repl 執行 以及 導出 truncate 刪除

安裝、配置MySQL
參考之前步驟搭建MySQL服務
為了做實驗方便,我們在同一臺機器上配置兩個MySQL服務(跑兩個端口)
cd /usr/local/; cp -r mysql mysql_2; cd mysql_2;
初始化mysql2: ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql2
拷貝配置文件:cp /etc/my.cnf ./my.cnf
修改配置文件相關參數:vim my.cnf #更改port 以及 socket
啟動:/usr/local/mysql_2/bin/mysqld_safe --defaults-file=/usr/local/mysql_2/my.cnf --user=mysql &
若開機啟動它,需加入到 /etc/rc.local中

  1. 配置主從準備工作
    設定mysql_2 為主端口3307,mysql為從端口為3306
    在主上創建測試庫: create database db1;
    然後導出主的mysql庫數據然後導入給db1
    mysqldump -uroot -S /tmp/mysql2.sock mysql > 123.sql ;
    mysql -uroot -S /tmp/mysql2.sock db1 < 123.sql

  2. 配置主(master)
    vim /usr/local/mysql_2/my.cnf #修改或添加:
    server-id=1
    log-bin=mysql-bin
    兩個可選參數(2選1):

    binlog-do-db=db1,db2 #需要同步的庫
    binlog-ignore-db=db1,db2 #忽略不同步的庫
    修改配置文件後,重啟mysql_2
    pid=ps uax |grep mysql2.sock |grep -v grep |awk ‘{print $2}‘ ; kill $pid; cd /usr/local/mysql_2/bin/; ./mysqld_safe --defaults-file=../my.cnf --user=mysql &
    設置root密碼:mysqladmin -u root -S /tmp/mysql2.sock password ‘123456‘
    mysql -u root -S /tmp/mysql2.sock -p‘123456‘
    grant replication slave on . to ‘repl‘@‘127.0.0.1‘ identified by ‘123123‘;
    flush tables with read lock;
    show master status; #一定要記住前兩列的內容,一會會用到

  3. 設置從(slave)
    vim /etc/my.cnf #修改或增加
    server-id = 2 #這個數值不能和主一樣
    可選參數:replicate-do-db=db1,db2 和 replicate-ignore-db=db1,db2 #意義同主的那兩個可選參數
    service mysqld restart
    拷貝主的db1庫數據到從:mysqldump -uroot -S /tmp/mysql2.sock -p123456 db1 > db1.sql; mysql -uroot -p -e "create database db1"; mysql -uroot -p db1 < db1.sql
    mysql -uroot -p #登陸從的mysql
    slave stop;
    change master to master_host=‘127.0.0.1‘, master_port=3307, master_user=‘repl‘, master_password=‘123123‘, master_log_file=‘mysql-bin.000006‘, master_log_pos=474952;
    slave start;
    主上: mysql -uroot -S /tmp/mysql2.sock -p123456 -e "unlock tables"
    從上查看從的狀態: show slave status\G;

  4. 測試主從
    主上清空db1庫的db表 :use db1; select count() from db"; truncate table db;
    進入slave,查看db1庫db表: use db1; select count(
    ) from db";
    主上刪除表db: drop table db;
    從上看db表不存在了
    建議: MySQL主從機制比較脆弱,謹慎操作。如果重啟master,務必要先把slave停掉,也就是說需要在slave上去執行 slave stop 命令,然後再去重啟master的mysql服務,否則很有可能就會中斷了。當然重啟完後,還需要把slave給開啟 slave start.

安裝、配置MySQL