Mysql数据库主从复制

Posted 杯中红茶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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数据库主从复制的主要内容,如果未能解决你的问题,请参考以下文章

mysql主从配置

mysql主从配置

Mysql 8主从复制配置图解

Mysql主从复制,实现数据同步

第五章:MySQL主从复制

安全最重要!MySQL配置主从复制,主主复制