首页 > 代码库 > Mysql数据库主从复制

Mysql数据库主从复制

  • 两台服务器

  192.168.1.78

  192.168.1.79

  两台服务器都安装mysql,安装步骤省略。

  • 主从复制配置

  1、配置主数据库/etc/my.cnf

  [mysqld]

  sql_mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,NO_AUTO_VALUE_ON_ZERO
  server-id=100
  log-bin=mysqlmaster-bin.log
  sync-binlog=1
  innodb_buffer_pool_size=512M #为物理内存70%
  lower_case_table_names=1 #使mysql不区分大小写
  innodb_flush_log_at_trx_commit=1
  trust_function_creators=1

     2、配置从数据库

  [mysqld]
  sql_mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,NO_AUTO_VALUE_ON_ZERO
  server-id=101 #比主数据大1
  log-bin=mysqlslave-bin.log
  sync-binlog=1
  innodb_buffer_pool_size=512M
  lower_case_table_names=1
  innodb_flush_log_at_trx_commit=1
  trust_function_creators=1

  3、重启mysql数据库

  4、登录主数据库

  在主数据库上创建用于主从复制的账户(192.168.1.79换成你的从数据库IP)

  mysql>GRANT REPLICATION SLAVE ON *.* TO ‘repl‘@‘192.168.1.79‘ IDENTIFIED BY ‘123456‘;

  主数据库锁表(禁止再插入数据以获取主数据库的的二进制日志坐标):

  mysql>FLUSH TABLES WITH READ LOCK;

  mysql>SHOW MASTER STATUS

  技术分享

   记录这两个值,下面会用到

  在主数据库上使用mysqldump命令创建一个数据快照

  mysql>mysqldump -uroot -p  -P3308 --all-databases  --triggers --routines --events >all.sql

   # 接下来会提示你输入mysql数据库的root密码,输入完成后,如果当前数据库不大,很快就能导出完成。
  解锁主数据的锁表操作
  mysql>UNLOCK TABLES;

  5、登录从数据库

  从导入主的快照

  mysql>mysql -uroot -p -h127.0.0.1 -P3308 < all.sql

  给从数据库设置复制的主数据库信息(注意修改MASTER_LOG_FILE和MASTER_LOG_POS的值):

  mysql>CHANGE MASTER TO MASTER_HOST=‘192.168.1.78‘,MASTER_USER=‘repl‘,MASTER_PASSWORD=‘123456‘,MASTER_LOG_FILE=‘mysqlmaster-bin.000001‘,MASTER_LOG_POS=1431;

  #然后启动从数据库的复制线程:

  mysql>START slave;

  #接着查询数据库的slave状态

  mysql>  SHOW slave STATUS \G

  如果下面两个参数都是Yes,则说明主从配置成功!

   Slave_IO_Running: Yes

  Slave_SQL_Running:Yes

  接下来你可以在主数据库上创建数据库、表、插入数据,然后看从数据库是否同步了这些操作

Mysql数据库主从复制