当前位置: 首页 > news >正文

配置主从mysql服务器

步骤 1: 安装MySQL

在所有服务器上安装MySQL 5.7。

步骤 2: 配置主服务器

  1. 修改配置文件 (/etc/my.cnf 或 /etc/mysql/my.cnf)

    [mysqld]
    server-id = 1
    log_bin = /var/log/mysql/mysql-bin.log
    binlog_do_db = eleme
  2. 重启MySQL服务:

    sudo systemctl restart mysql
  3. 创建一个用于复制的MySQL账户:

    CREATE USER 'replicator'@'%' IDENTIFIED BY 'password';
    GRANT REPLICATION SLAVE ON *.* TO 'replicator'@'%';
    FLUSH PRIVILEGES;
    SHOW MASTER STATUS;

步骤 3: 配置从服务器

  1. 修改配置文件 (/etc/my.cnf 或 /etc/mysql/my.cnf):

    [mysqld]
    server-id = 2 # 从服务器1使用2,从服务器2使用3
    relay_log = /var/log/mysql/mysql-relay-bin.log
    log_bin = /var/log/mysql/mysql-bin.log
    binlog_do_db = eleme
    read_only = 1
  2. 重启MySQL服务:

    sudo systemctl restart mysql
  3. 配置复制:

    CHANGE MASTER TO
    MASTER_HOST='主服务器IP',
    MASTER_USER='replicator',
    MASTER_PASSWORD='password',
    MASTER_LOG_FILE='mysql-bin.000001', # 从SHOW MASTER STATUS获取
    MASTER_LOG_POS=123; # 从SHOW MASTER STATUS获取
    START SLAVE;
  4. 检查从服务器状态:

    SHOW SLAVE STATUS\G

步骤 4: 配置防火墙

确保防火墙允许3306端口:

sudo ufw allow 3306/tcp

步骤 5: 创建数据库和表

8. 配置静态资源服务器

  1. 在主服务器上创建数据库:

    CREATE DATABASE eleme CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  2. 创建表:

    USE eleme;

    CREATE TABLE t_user (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(255) NOT NULL,
    email VARCHAR(255)
    );
  3. 步骤 6: 添加两行记录

    在主服务器的MySQL数据库中执行以下SQL命令来添加两行记录:

    USE eleme;
    INSERT INTO t_user (username, email) VALUES ('user1', 'user1@example.com');
    INSERT INTO t_user (username, email) VALUES ('user2', 'user2@example.com');

    对于上述的每个步骤,我将给出一些详细的命令和配置指导,但请注意,具体命令可能会根据您的操作系统、软件版本和安装路径而有所不同。

    7. 使用MyCat为3台数据库设置负载均衡(读写分离)

  4. 安装MyCat

    • 这一步通常涉及解压MyCat包到指定目录,并可能需要设置环境变量(如PATH)或创建服务(如systemd服务)。
  5. 修改schema.xml

    • 找到MyCat的schema.xml配置文件(通常在MyCat的conf目录下)。
    • 定义逻辑库(schema)、表以及数据节点(dataNode)的映射。
    <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100">
    <table name="t_user" primaryKey="id" dataNode="dn1,dn2,dn3" rule="sharding-by-intfile" />
    </schema>
    <dataNode name="dn1" dataHost="localhost1" database="eleme" />
    <dataNode name="dn2" dataHost="localhost2" database="eleme" />
    <dataNode name="dn3" dataHost="localhost3" database="eleme" />
    <dataHost name="localhost1" maxCon="1000" minCon="10" balance="0"
    writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
    <heartbeat>select user()</heartbeat>
    <writeHost host="hostM1" url="jdbc:mysql://192.168.1.100:3306" user="root" password="password">
    <readHost host="hostS1" url="jdbc:mysql://192.168.1.101:3306" user="root" password="password"/>
    </writeHost>
    <!-- 可以添加更多readHost -->
    </dataHost>
    <!-- 重复上述dataHost配置为localhost2和localhost3 -->
  6. 修改server.xml

    • 配置用户及其权限。
    <user name="myuser">
    <property name="password">mypassword</property>
    <property name="schemas">TESTDB</property>
    <property name="readOnly">false</property>
    </user>
  7. 配置rule.xml(如果需要自定义分片规则)

    • 定义分片规则,这里假设您使用的是内置的或已定义的规则。
  8. 安装Nginx

    • 使用包管理器安装Nginx(如apt-get install nginx对于Debian/Ubuntu,或yum install nginx对于CentOS)。
  9. 配置Nginx以提供静态资源

    • 编辑Nginx的配置文件(通常是/etc/nginx/nginx.conf/etc/nginx/sites-available/default),设置服务器块以指向静态资源的目录。
    server {
    listen 80;
    server_name static.example.com;
    location / {
    root /path/to/static/files;
    autoindex on; # 如果需要列出目录内容
    try_files $uri $uri/ =404;
    }
    }
  10. 重启Nginx

    • 使用nginx -s reload或系统服务命令(如systemctl restart nginx)来重启Nginx。
  11. 部署后端应用程序
    • 将您的Java应用程序打包为WAR或JAR文件,并部署到Tomcat、Spring Boot等应用服务器上。
    • 确保应用程序配置为在端口8080上运行。确保服务器的防火墙规则允许从外部访问端口80

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • AcWing848有向图的拓扑排序
  • ModuleNotFoundError: No module named ‘sentence_transformers.model_card‘
  • 蓝牙音视频远程控制协议(AVRCP) command跟response介绍
  • filezilla软件介绍
  • 【API网关】 使用Kong、Zuul等工具实现API网关
  • 【Python系列】执行 Shell 命令的六种方法
  • Android UI:PopupWindow:源码分析:设置WindowManager.LayoutParams中的各种参数
  • 《Redis核心技术与实战》学习笔记5——内存快照RDB:宕机后,Redis如何实现快速恢复?
  • 掌握责任链模式:提升系统灵活性与扩展性的秘诀!
  • 如何在Linux系统上使用ONLYOFFICE文档编辑PDF文件
  • and design vue表格列宽度拖拽,vue-draggable-resizable插件使用
  • 软件工程(4)面向对象方法:面向对象软件工程OOSE与案例实践
  • 编程艺术的细枝末节:深入探索调用约定
  • 仿twitter社区源码推特PHP源码
  • xss靶场详解
  • python3.6+scrapy+mysql 爬虫实战
  • [译] 理解数组在 PHP 内部的实现(给PHP开发者的PHP源码-第四部分)
  • Android组件 - 收藏集 - 掘金
  • CEF与代理
  • Docker入门(二) - Dockerfile
  • flask接收请求并推入栈
  • Redis 中的布隆过滤器
  • 优秀架构师必须掌握的架构思维
  • 云大使推广中的常见热门问题
  • 职业生涯 一个六年开发经验的女程序员的心声。
  • shell使用lftp连接ftp和sftp,并可以指定私钥
  • 第二十章:异步和文件I/O.(二十三)
  • ​​​​​​​​​​​​​​Γ函数
  • ‌JavaScript 数据类型转换
  • #1015 : KMP算法
  • (10)Linux冯诺依曼结构操作系统的再次理解
  • (10)STL算法之搜索(二) 二分查找
  • (14)Hive调优——合并小文件
  • (14)学习笔记:动手深度学习(Pytorch神经网络基础)
  • (2024,Vision-LSTM,ViL,xLSTM,ViT,ViM,双向扫描)xLSTM 作为通用视觉骨干
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (Ruby)Ubuntu12.04安装Rails环境
  • (附源码)流浪动物保护平台的设计与实现 毕业设计 161154
  • (删)Java线程同步实现一:synchronzied和wait()/notify()
  • (转载)OpenStack Hacker养成指南
  • .dat文件写入byte类型数组_用Python从Abaqus导出txt、dat数据
  • .gitignore文件使用
  • .NET Core 成都线下面基会拉开序幕
  • .NET gRPC 和RESTful简单对比
  • .NET 将混合了多个不同平台(Windows Mac Linux)的文件 目录的路径格式化成同一个平台下的路径
  • .net获取当前url各种属性(文件名、参数、域名 等)的方法
  • .NET简谈设计模式之(单件模式)
  • .net通用权限框架B/S (三)--MODEL层(2)
  • .net项目IIS、VS 附加进程调试
  • .NET运行机制
  • .Net转Java自学之路—SpringMVC框架篇六(异常处理)
  • @selector(..)警告提示
  • []sim300 GPRS数据收发程序
  • [2018-01-08] Python强化周的第一天
  • [2019/05/17]解决springboot测试List接口时JSON传参异常