0

我正在编写一个 Windows 服务程序来不断地从主数据库同步本地从数据库。我有一个名为nsbm_syncdb. 如果我想同步从数据库,我必须编写以下查询。

CHANGE MASTER TO
MASTER_HOST='192.168.1.1',
MASTER_USER='nsbm_root',
MASTER_PASSWORD='1234',
MASTER_LOG_FILE='mysql-bin.0000xx',
MASTER_LOG_POS=234;

对于上面的代码,我应该通过输入查询来获取 Master 数据库MASTER_LOG_FILE的值。MASTER_LOG_POS"SHOW MASTER STATUS"

如何使用 MySql 查询从 Master 数据库中检索日志位置和日志文件名?

我浏览了互联网,但还没有找到查询。

4

2 回答 2

0

我们可以在 Windows 服务程序中编写 C# 代码来访问SHOW MASTER STATUS表的值。它不是现有的表。所以我们必须创建一个DataTable并将详细信息填充SHOW MASTER STATUS到其中。

string master_log_file = null;
long master_log_pos = 0;

        using (MySqlConnection con = new MySqlConnection(conStrM))
        {
            using (MySqlCommand cmd = new MySqlCommand("SHOW MASTER STATUS", con))
            {
                cmd.CommandType = CommandType.Text;
                using (MySqlDataAdapter sda = new MySqlDataAdapter(cmd))
                {
                    if (sda != null)
                    {
                        using (DataTable dt = new DataTable())
                        {
                            sda.Fill(dt);
                            foreach (DataRow row in dt.Rows)
                            {
                                master_log_file = row["File"].ToString();
                                master_log_pos = Convert.ToInt64(row["Position"]);
                            }
                        }
                    }

                }
            }
        }

从上面的代码我们可以得到master_log_filemaster_log_pos

于 2018-02-14T10:56:37.020 回答
0

您可以使用带有--master-data=2选项mysqldump的程序(随 MySQL 提供) 。

这会将完整的CHANGE MASTER ...命令写入输出。

于 2018-02-13T05:03:28.790 回答