配置主从mysql服务器
步骤 1: 安装MySQL
在所有服务器上安装MySQL 5.7。
步骤 2: 配置主服务器
-
修改配置文件 (
/etc/my.cnf
或/etc/mysql/my.cnf
)[mysqld]
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
binlog_do_db = eleme
-
重启MySQL服务:
sudo systemctl restart mysql
-
创建一个用于复制的MySQL账户:
CREATE USER 'replicator'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'replicator'@'%';
FLUSH PRIVILEGES;
SHOW MASTER STATUS;
步骤 3: 配置从服务器
-
修改配置文件 (
/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
-
重启MySQL服务:
sudo systemctl restart mysql
-
配置复制:
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;
-
检查从服务器状态:
SHOW SLAVE STATUS\G
步骤 4: 配置防火墙
确保防火墙允许3306端口:
sudo ufw allow 3306/tcp |
步骤 5: 创建数据库和表
8. 配置静态资源服务器
-
在主服务器上创建数据库:
CREATE DATABASE eleme CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-
创建表:
USE eleme;
CREATE TABLE t_user (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(255) NOT NULL,
email VARCHAR(255)
);
-
步骤 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台数据库设置负载均衡(读写分离)
-
安装MyCat
- 这一步通常涉及解压MyCat包到指定目录,并可能需要设置环境变量(如
PATH
)或创建服务(如systemd服务)。
- 这一步通常涉及解压MyCat包到指定目录,并可能需要设置环境变量(如
-
修改
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 -->
- 找到MyCat的
-
修改
server.xml
- 配置用户及其权限。
<user name="myuser">
<property name="password">mypassword</property>
<property name="schemas">TESTDB</property>
<property name="readOnly">false</property>
</user>
-
配置
rule.xml
(如果需要自定义分片规则)- 定义分片规则,这里假设您使用的是内置的或已定义的规则。
-
安装Nginx
- 使用包管理器安装Nginx(如
apt-get install nginx
对于Debian/Ubuntu,或yum install nginx
对于CentOS)。
- 使用包管理器安装Nginx(如
-
配置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;
}
}
- 编辑Nginx的配置文件(通常是
-
重启Nginx
- 使用
nginx -s reload
或系统服务命令(如systemctl restart nginx
)来重启Nginx。
- 使用
- 部署后端应用程序
- 将您的Java应用程序打包为WAR或JAR文件,并部署到Tomcat、Spring Boot等应用服务器上。
- 确保应用程序配置为在端口8080上运行。确保服务器的防火墙规则允许从外部访问端口80