mysql主从搭建

打印 上一主题 下一主题

主题 525|帖子 525|积分 1575

mysql主从搭建

环境:ubuntu20.04.1,mysql:8.0.22。
主:192.168.87.3
备:192.168.87.6
安装数据库
  1. sudo apt-get install mysql-server
  2. sudo apt-get install mysql-client
  3. sudo apt-get install libmysqlclient-dev
复制代码
数据库配置

设置数据库密码

首次安装后,使用sudo mysql -uroot -p直接进入,更改root密码操作如下:
  1. use mysql;
  2. ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';
  3. FLUSH PRIVILEGES;
复制代码
主库设置


  • 配置/etc/mysql/mysql.conf.d/mysqld.cnf如下:
    1. [mysqld]
    2. user                = mysql
    3. pid-file        = /var/run/mysqld/mysqld.pid
    4. socket        = /var/run/mysqld/mysqld.sock
    5. port                = 3306
    6. datadir        = /var/lib/mysql
    7. bind-address                = 192.168.87.3 # 本机ip
    8. mysqlx-bind-address        = 127.0.0.1
    9. key_buffer_size                = 16M
    10. myisam-recover-options  = BACKUP
    11. max_connections        = 1000
    12. log_error = /var/log/mysql/error.log
    13. server-id                = 1
    14. log_bin                        = /var/log/mysql/mysql-bin.log
    15. max_binlog_size   = 100M
    16. binlog_do_db          = test
    17. binlog_ignore_db      = mysql
    18. binlog_format = row
    19. sync_binlog = 1
    20. innodb_flush_log_at_trx_commit = 1
    复制代码
  • 更改完后重启数据库
    1. systemctl restart mysql.service
    复制代码
  • 创建同步账号
    1. CREATE USER 'sync'@'192.168.87.6' IDENTIFIED WITH mysql_native_password BY 'sync';
    2. grant replication slave on *.* to 'sync'@'192.168.87.6';
    复制代码
    192.168.87.6为从数据库的IP。

  • 查看配置是否生效


  • 创建数据快照
    1. mysqldump --all-databases --master-data > dbdump.db
    复制代码
    –master-data这个选项会自动加上CHANGE_MASTER_TO给从机来开始复制过程。在备份时使用–databases(备份特定的数据库)和–ignore-tables(排除备份特定的表) 选项,各个数据库和表名之间用空格隔开。

设置远程访问
  1. use mysql;
  2. update user set host='%' where user = 'root';
  3. FLUSH PRIVILEGES;
  4. GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
复制代码
如果此时仍无法访问,查看防火墙是否关闭。关闭命令:
  1. sudo ufw disable
复制代码
或者开放3306端口号。
从数据库配置


  • 配置/etc/mysql/mysql.conf.d/mysqld.cnf如下:
    1. [mysqld]
    2. user                = mysql
    3. pid-file        = /var/run/mysqld/mysqld.pid
    4. socket        = /var/run/mysqld/mysqld.sock
    5. port                = 3306
    6. datadir        = /var/lib/mysql
    7. bind-address                = 192.168.87.6
    8. mysqlx-bind-address        = 127.0.0.1
    9. key_buffer_size                = 16M
    10. myisam-recover-options  = BACKUP
    11. log_error = /var/log/mysql/error.log
    12. server-id                = 2
    13. log_bin                        = /var/log/mysql/mysql-bin.log
    14. # binlog_expire_logs_seconds        = 2592000
    15. max_binlog_size   = 100M
    16. binlog_do_db                = test
    17. binlog_ignore_db        = mysql
    复制代码
  • 同步数据
    在主库上dump的文件scp到从库上,然后登录mysql并执行如下命令:
    1. set sql_log_bin=0;
    2. source /home/shitianming/Documents/dbdump.db
    复制代码
  • 配置slave
    1. CHANGE MASTER TO
    2. MASTER_HOST='192.168.87.3',
    3. MASTER_USER='sync',
    4. MASTER_PASSWORD='sync',
    5. MASTER_PORT=3306,
    6. MASTER_LOG_FILE='mysql-bin.000003',
    7. MASTER_LOG_POS=730;
    复制代码
    上述参数在主库的mysql客户端上运行show master status可看到。

  • 进行测试
    在主库的test数据库里添加数据,在从库上看到是否同步。
参考


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

用户国营

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表