MySql 读写分离配置 MySQL是开源的关系型
数据库系统。MySql 读写分离配置,
主从同步复制(Replication)是从一台MySQL数据库
服务器(主服务器master)复制数据到另一个服务器(从服务器slave)的一个进程。 MySql 读写分离配置 配置主服务器 (master) 1、编辑数据库配置文件my.cnf 或 my.ini (windows),一般在/etc/目录下。 #vi /etc/my.cnf 在[mysqld]的下面加入下面代码: log-bin=mysql-bin server-id=1 innodb_flush_log_at_trx_commit=1 sync_binlog=1 binlog-do-db=wordpress binlog_ignore_db=mysql server-id=1中的1可以任定义,只要是唯一的就行。 binlog-do-db=wordpress是表示只备份wordpress。 binlog_ignore_db=mysql表示忽略备份mysql。 不加binlog-do-db和binlog_ignore_db,那就表示备份全部数据库。 2、然后重启MySQL: #service mysqld restart 3、登录MySQL服务器。 #mysql -uroot -p MySql 读写分离其余配置 在主服务器新建一个用户赋予“REPLICATION SLAVE”的权限。你不需要再赋予其它的权限。在下面的命令,把X.X.X.X替换为从服务器的IP。 http://www.qi788.com/sitemap mysql>CREATE USER 'user'@ 'X.X.X.X' IDENTIFIED BY 'password'mysql>GRANT REPLICATION SLAVE ON *.* TO 'user'@'X.X.X.X' IDENTIFIED BY 'password'4、执行以下命令锁定数据库以防止写入数据。 mysql>FLUSH TABLES WITH READ LOCK5、退出mysql命令行,导出数据库 #mysqldump -u root -p123456 --all-databases >/root/all.sql 6、使用scp命令传输数据库文件all.sql到从服务器。 #scp /root/all.sql root@ www.example.com :/root 7、再次连接数据库进入mysql命令行查看master状态。 mysql>SHOW MASTER STATUS请记下显示的信息,配置从服务器会用到。 +——————+———-+————–+——————+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +——————+———-+————–+——————+ | mysql-bin.000001| 253| dbispconfig | mysql | +——————+———-+————–+——————+ 1 row in set (0.00 sec) 8、解锁数据表。 mysql>UNLOCK TABLES配置从服务器 (slave) 登录从服务器。 1、导入主服务器的数据库。 #mysql -u root -p123456 </root/all.sql 2、编辑配置文件my.cnf,在[mysqld]下面加入: server-id=2 注:2可以自己定义,只要保证唯一的就行。 3、保存文件并重启mysqld。 #service mysqld restart 4、登录mysql服务器,执行以下命令。 mysql>CHANGE MASTER TO MASTER_HOST='X.X.X.X', MASTER_USER='user', MASTER_PASSWORD='password', MASTER_PORT=3306, MASTER_LOG_FILE='mysql-bin.000001, MASTER_LOG_POS=253, MASTER_CONNECT_RETRY=10注: MASTER_HOST:主服务器的IP。 MASTER_USER:配置主服务器时建立的用户名 MASTER_PASSWORD:用户密码 MASTER_PORT:主服务器mysql端口,如果未曾修改,默认即可。 这里master_log_file和master_log_pos就是前面show master status的结果。 5、启动slave进程。 mysql>START SLAVEmysql>SHOW SLAVE STATUS如果能查出一条记录 那么,配置成功 6、查看mysql的日志,一般在/var/log/目录下,如果启动成功,你应该会看到类似下面的日志。 091104 8:42:02 [Note] Slave I/O thread: connected to master ‘root@X.X.X.X:3306?, replication started in log ‘mysql-bin.000001? at position 98 现在主服务器和从服务器已经配置好了。另外你可能需要设置主服务器的数据库二进制日志的过期时间,可以在配置文件中使用参数expire_logs_days来设定。 java spring事务设置,方法头部设置 @Transactional(readOnly=true) java 连接 驱动 设置 jdbc.connection.driver=com.mysql.jdbc.ReplicationDriver jdbc.connection.url=jdbc:mysql:replication://192.168.202.190,192.168.202.190/job?useUnicode=true&characterEncoding=utf-8 MySql 读写分离配置到此结束 资料来源: http://www.qi788.com/info/12.html只是把每个事务的频繁写,变成了master/slave之间的批量写而已。
如果数据库在表结构设计上,存在对同一个表的频繁读写 *** 作,
那么这个性能提升有限,因为很多需要读的情况,仍然要等同步写 *** 作完成。
读写分离,不是万能钥匙。有时候会有效。
读写分离的意思是,写入的时候向 a 服务器写入,而读出的时候从 b c d 甚至更多的服务器读出;这样的架构适合于读多写少的应用,最典型的就是火车购票系统,一般我们买票的时候要先查询好多次,包括车次啊,时间啊,这都是读 *** 作,而最后可能只买一张车票,这是写 *** 作;做了读写分离之后,可以将资源分配到最合理的地方,不会使某些资源闲置,而另一些资源不够用;
但是读写分离必然引发主从复制,试想一共有 10 张票,买了 1 张票,读的时候如果还是读到 10 张余票就不对了,因此需要主从复制,再读的时候,就只能读到 9 张余票了;
评论列表(0条)