MySQL基于GTID的主从复制的实现方案

上周在公司内网发布的,现在迁移到这里来。

假设有两台服务器,主服务器叫master1(10.4.8.31), 服务器叫slave1(10.4.4.14)

操作步骤:

  1.  数据库安装具体过程略去不表。两台服务器最好都从源码安装,版本保持一致,此次试验的版本是5.6.14,安装的时候编译命令如下:
    sudo cmake \
    -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
    -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
    -DDEFAULT_CHARSET=utf8 \
    -DDEFAULT_COLLATION=utf8_general_ci \
    -DWITH_MYISAM_STORAGE_ENGINE=1 \
    -DWITH_INNOBASE_STORAGE_ENGINE=1 \
    -DWITH_ARCHIVE_STORAGE_ENGINE=1 \
    -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
    -DWITH_MEMORY_STORAGE_ENGINE=1 \
    -DWITH_READLINE=1 \
    -DENABLED_LOCAL_INFILE=1 \
    -DMYSQL_DATADIR=/var/mysql/data \
    -DMYSQL_USER=mysql \
    -DMYSQL_TCP_PORT=3306 \
    -DMYSQL_USER=mysql
  2. 在master1的配置文件/usr/local/mysql/my.cnf中添加以下内容:binlog-format=ROW
    log-slave-updates=true
    gtid-mode=on
    enforce-gtid-consistency=true
    master-info-repository=TABLE
    relay-log-info-repository=TABLE
    sync-master-info=1
    slave-parallel-workers=2
    binlog-checksum=CRC32
    master-verify-checksum=1
    slave-sql-verify-checksum=1
    binlog-rows-query-log-events=1
    server-id=2
    report-port=3306
    port=3306
    log-bin=10-4-8-31-bin.log
    report-host=10.4.8.31
    innodb_flush_log_at_trx_commit=1
    sync_binlog=1
  3. 在slave1的配置文件中添加以下内容,请注意和master1种的区别:
    binlog-format=ROW
    log-slave-updates=true
    gtid-mode=on
    enforce-gtid-consistency=true
    master-info-repository=TABLE
    relay-log-info-repository=TABLE
    sync-master-info=1
    slave-parallel-workers=2
    binlog-checksum=CRC32
    master-verify-checksum=1
    slave-sql-verify-checksum=1
    binlog-rows-query-log-events=1
    server-id=10
    report-port=3306
    port=3306
    log-bin=10-4-4-14-bin.log
    report-host=10.4.4.14
    innodb_flush_log_at_trx_commit=1
    sync_binlog=1
  4. 两台server的mysql都重启:sudo service mysql restart
  5. 登陆master1服务器,执行以下命令:
    mysql -uroot -p -e “GRANT REPLICATION SLAVE ON *.* TO sync@10.4.4.14 IDENTIFIED BY ‘syncslave’;”  //允许slave1通过sync接入
    mysql -uroot -p -e “FLUSH PRIVILEGES;”
    mysql -uroot -p -e “FLUSH TABLES WITH READ LOCK;”
    mysql -uroot -p -e “show master status;”
    记下这条命令显示的Position值,比如1594,这个就是接下来从服务器要从复制的起始点。
    mysqldump -uroot -p -h127.0.0.1 -P3306 –all-databases  –triggers –routines –events > master.sql
    mysql -uroot -p -e “UNLOCK TABLES;”
    rsync master.sql xpos@slave1:/home/xpos/
  6. 登陆slave1服务器,执行以下命令:
    mysql -uroot -p < /home/xpos/master.sql
    注:此处如果报错:ERROR 1840 (HY000) at line 24: @@GLOBAL.GTID_PURGED can only be set when @@GLOBAL.GTID_EXECUTED is empty ,需要先执行mysql -uroot -p -h127.0.0.1 -P3306 -e “reset master;”
    mysql -uroot -p -e “CHANGE MASTER TO MASTER_HOST=’10.4.8.31′,MASTER_USER=’sync’,MASTER_PASSWORD=’syncslave’,MASTER_AUTO_POSITION=1594;”
    注:此处如果报错:Could not initialize master info structure; more error messages can be found in the MySQL error log,需要先执行mysql -uroot -p -h127.0.0.1 -P3306 -e “reset slave;”
    mysql -uroot -p -e “START SLAVE;“
  7. 最好查看slave1的同步状,标红的地方表示主从复制搭建成功。image2014-1-17 12-52-30=======================  The End   =====================
发表评论?

0 条评论。

发表评论


注意 - 你可以用以下 HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>