MySQL主从实验

192.168.100.1主

设置权限

Grant all on*.* to user@192.168.100.2 identified by'123456';

 

测试从服务器是否能够登录到主服务器

./mysql-uuser-p -h192.168.100.1

 

设置同步权限(主)

grantreplication slave on *.* to user@192.168.100.2identified by '123456';

 

在主服务器导出数据

./mysqldump-uroot -p 44demo > /root/hello.sql;

 

ssh管道传输给从服务器

scp/root/hello.sql 192.168.100.2:/root/litianwen.sql;

 

在从服务器执行导入

./mysql -uroot-p 库名 < sql文件

 

主从服务器都执行刷新,将服务器的整个状态清零

reset master;

flush logs;

 

改主服务器配置文件

vi /etc/my.cnf

 

log-bin=mysql-bin        //开启binlog

# binarylogging format - mixed recommended

binlog_format=mixed

# requiredunique id between 1 and 2^32 - 1

# defaults to 1if master-host is not set

# but will notfunction as a master if omitted

server-id       = 1             、、服务器标号不能冲突

 

改从服务器配置文件

vi /etc/my.cnf

 

log-bin=mysql-bin

# binarylogging format - mixed recommended

binlog_format=mixed

# requiredunique id between 1 and 2^32 - 1

# defaults to 1if master-host is not set

# but will notfunction as a master if omitted

server-id       = 2       //服务器标号改为2

 

 

重启进程

pkill mysqld

./mysqld_safe --user=mysql&

 

登陆查看同步信息

show slave status \G

一下两个值都为yes为配置成功

 Slave_IO_Running: Yes

 Slave_SQL_Running: Yes

 

同步binlog日志,如果不同步,先关闭从服务器:stop slave;再通过change master to来进行指定主服务器的相关参数,开启从服务器:start slave;

 

 

 

 

 

分库分表

user表变user库

 

写数据

用户名litianwen

数据路由

substr(0,1)得到l,检测表是否存在(表如果不存在创建后进行写入,存在则写入)

 

读数据

到l表中进行查询

 

 

如果单张表数据特别大

进行hash平均一次      md5('用户名');截取一位进行分表

 

 

需要解决的问题

1、有分页怎么办

如果以用户卡号或是事件来做的话,可以将几个表连在一起进行上一页下一页,搞不定总数

使用nosql单独计数,实现对某个用户的记录条件进行计数

2、原先有36张表,不够了,要扩展到1024张表,扩展怎么办

数据存两份

总表写一份,分表写一份,增删改和查询分开

### 设置和测试 MySQL 主从复制 #### 配置主服务器 为了实现MySQL主从复制,首先需要配置主服务器。在`/etc/my.cnf`文件中加入如下配置[^3]: ```ini server-id=1 log_bin=mysql-bin.log binlog-do-db=testdb ``` 上述配置指定了唯一的`server-id`用于区分不同的MySQL实例,并启用了二进制日志记录功能。 接着启动或重启主服务器以应用更改: ```bash docker restart master-mysql ``` #### 创建用于复制的账户 登录到主服务器并执行以下命令来创建一个专门用于复制操作的新用户: ```sql CREATE USER 'repl'@'%' IDENTIFIED BY 'password'; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%'; FLUSH PRIVILEGES; ``` 这一步骤确保了从服务器可以连接至主服务器获取更新的数据变化信息。 #### 获取主服务器状态 通过查询主服务器的状态获得必要的位置参数以便后续配置从服务器: ```sql SHOW MASTER STATUS; ``` 此命令返回的结果将显示当前二进制日志的位置以及文件名等重要信息。 #### 配置从服务器 编辑从服务器上的my.cnf文件, 添加或修改下列选项[^5]: ```ini server_id=20 read_only=ON relay_log=/path/to/relay-log replicate_do_db=testdb ``` 这里设置了只读模式(`read_only`)防止意外写入,并指定要同步的具体数据库名称。 同样地,重新加载服务使新设置生效: ```bash service mysqld restart ``` #### 连接从服务器到主服务器 进入从服务器控制台输入下面语句完成链接过程: ```sql CHANGE MASTER TO MASTER_HOST='master_ip', MASTER_USER='repl', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=<position>; START SLAVE; ``` 其中`<position>`应替换为之前从`SHOW MASTER STATUS;`得到的实际数值。 验证从服务器是否正常工作可以通过检查slave线程的状态来进行: ```sql SHOW SLAVE STATUS\G ``` 当看到两个进程都处于“yes”的状态,则表示成功建立了主从关系。 #### 测试数据一致性 向主库插入一条新的记录观察该变动能否及时反映于从端: ```sql INSERT INTO testdb.t_user VALUES(5,'newUser'); SELECT * FROM testdb.t_user WHERE id = 5; ``` 如果一切顺利的话,在从机上也能查找到这条新增的信息说明整个流程已经正确实施完毕。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值