admin 管理员组文章数量: 887021
2024年1月14日发(作者:下载168网站)
MySQL数据库的同步配置
MySQL是开源的关系型数据库系统。主从同步复制(Replication)是从一台MySQL数据库服务器(主服务器master)复制数据到另一个服务器(从服务器slave)的一个进程。
主主、主从是用来分担MYSQL的压力?
#####################配置主服务器(master)#######################################
1、编辑数据库配置文件 或 (windows),一般在/etc/目录下。
#vi /etc/
在[mysqld]的下面加入下面代码:
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/
user=mysql
server-id=1 加入
log-bin=/var/lib/mysql/ 加入
#replicate-do-db=cloud
#auto-increment-increment=2
#auto-increment-offset=1
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
innodb_rollback_on_timeout=1
innodb_lock_wait_timeout=600
max_connections=350
log-bin=mysql-bin
binlog-format='ROW'
[mysqld_safe]
log-error=/var/log/
pid-file=/var/run/mysqld/
名词注释:
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
在主服务器192.168.3.38新建一个用户赋予“REPLICATION SLAVE”的权限。你不需要再赋予其它的权限。在下面的命令,把X.X.X.X替换为从服务器的IP。
mysql> CREATE USER 'bak'@'192.168.3.90' IDENTIFIED BY 'wangsu520';
mysql>GRANT REPLICATION SLAVE ON *.* TO 'bak'@'192.168.3.90' IDENTIFIED BY
'wangsu520';
测试:在客户机使用bak ,wangsu520去连接主机
mysql –ubak –pwangsu –h 192.168.3.38是否能连接上。并测试是否能查看表的权限有哪几个表。需要是全部的表可以查看。
4、执行以下命令锁定数据库以防止写入数据。
mysql>FLUSH TABLES WITH READ LOCK;
5、退出mysql命令行,导出数据库
#mysqldump -u root –pwangsu520 --all-databases > /root/
6、使用scp命令传输数据库文件到从服务器。
#scp /root/ root@192.168.3.90:/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)
注:如果主机没有人写入的话,本步骤检查以及后面在同步的时候,直接再查看主机的SHOW MASTER STATUS; 以最后的一次数据为准也可以。
8、解锁数据表。
mysql>UNLOCK TABLES;
########################备机操作##############################################
IP:192.168.3.90
配置从服务器(slave)
登录从服务器。
1、导入主服务器的数据库。
#mysql -u root –pwangsu520 < /root/
2、编辑配置文件,在[mysqld]下面加入:
server-id=2
注:2可以自己定义,只要保证唯一的就行。
3、保存文件并重启mysqld。
#service mysqld restart
4、登录从mysql服务器,执行以下命令。
mysql> change master to
master_host='192.168.3.38',master_user='bak',master_password='wangsu520',master_log_file='mysql-bin.000040',master_log_pos=3094;
注:
MASTER_HOST:主服务器的IP。
MASTER_USER:配置主服务器时建立的用户名
MASTER_PASSWORD:用户密码
MASTER_PORT:主服务器mysql端口,如果未曾修改,默认即可。
这里master_log_file和master_log_pos就是前面show master status的结果。
###注:如果本步骤无法操作成功,表示要先停止slave slave;
5、启动slave进程。
mysql>START SLAVE;
mysql>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
7.验证:
mysql> SHOW SLAVE STATUSG;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.3.38
Master_User: bak
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000087
Read_Master_Log_Pos: 642955
Relay_Log_File: mysqld-relay-bin.000004
Relay_Log_Pos: 643100
Relay_Master_Log_File: mysql-bin.000087
Slave_IO_Running: Yes 表示同步正常
Slave_SQL_Running: Yes表示同步正常
Replicate_Do_DB: cloud
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 642955
Relay_Log_Space: 1063799
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0 ##无错误表示正常同步
Last_IO_Error: ##无错误表示正常同步
Last_SQL_Errno: 0
Last_SQL_Error:
1 row in set (0.00 sec)
现在主服务器和从服务器已经配置好了。另外你可能需要设置主服务器的数据库二进制日志的过期时间,可以在配置文件中使用参数expire_logs_days来设定。
灾难处理办法 :
当主机MYSQL宕机后,从机进行更改IP更换主机IP,但要保证两边mysql访问权限一致。
命令:show grants for 'cloud'@'localhost';
从机:
mysql> show grants for 'cloud'@'localhost';
+--------------------------------------------------------------------------------------------------------------+
| Grants for cloud@localhost |
+--------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'cloud'@'localhost' IDENTIFIED BY PASSWORD '*888557FBD1698D34902AE46256E2735786D95C47' |
+--------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
主机:
mysql> show grants for 'cloud'@'localhost';
+----------------------------------------------------------------------------------------------------------------+
| Grants for cloud@localhost |
+----------------------------------------------------------------------------------------------------------------+
| GRANT PROCESS ON *.* TO 'cloud'@'localhost' IDENTIFIED BY PASSWORD '*888557FBD1698D34902AE46256E2735786D95C47' |
| GRANT ALL PRIVILEGES ON `cloud`.* TO 'cloud'@'localhost' |
| GRANT ALL PRIVILEGES ON `cloudbridge`.* TO 'cloud'@'localhost' |
| GRANT ALL PRIVILEGES ON `cloud_usage`.* TO 'cloud'@'localhost' |
+----------------------------------------------------------------------------------------------------------------+
4 rows in set (0.00 sec)
cloudstack平台操作:
先安装平台基本环境 :
-setup-databases cloud:wangsu@192.168.3.90
-setup-management
e cloud-management start
如果这个过程还不能查看到平台界面以及监听的端口。
请1。service cloud-management stop 后,重复上面1.2.3
版权声明:本文标题:MySQL数据库的主从配置 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1705245250h478533.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论