{"id":52989,"date":"2022-11-08T19:36:29","date_gmt":"2022-11-08T19:36:29","guid":{"rendered":"https:\/\/dbtut.com\/?p=52989"},"modified":"2022-11-08T19:37:50","modified_gmt":"2022-11-08T19:37:50","slug":"sql-server-always-on-availability-groups-setup","status":"publish","type":"post","link":"https:\/\/dbtut.com\/index.php\/2022\/11\/08\/sql-server-always-on-availability-groups-setup\/","title":{"rendered":"Sql Server Always On Availability Groups Setup"},"content":{"rendered":"<p>SQL Server 2017 and SQL Server 2019 can run on Linux operating system, and SQL Server Always On Availability Groups can be Setup without the need for Windows Failover Cluster with SQL Server 2017.<\/p>\n<p>In SQL Server Always On classic usage, we need Windows Server Failover Cluster (WSFC), we can do this on Linux using Pacemaker.<\/p>\n<p>You can use SQL Server AlwaysOn AG with two cluster types in Linux.<\/p>\n<p><strong>External :<\/strong> used to provide automatic failover and increase continuity, using a pacemaker.<\/p>\n<p><strong>None :<\/strong> It is used only for read scale and manual failover, without the need for a pacemaker.<\/p>\n<p>Windows Failover Cluster on Windows; It has functions such as failover, health monitoring, resource management, hosted application configuration, updating changes in nodes and spreading them to the cluster.<\/p>\n<p>The importance and role of the Windows Failover Cluster for Windows is huge.<\/p>\n<p><strong>What about Linux?<\/strong><\/p>\n<p>Since there is no WSFC service on Linux, this configuration information (metadata) is kept in the master database by the SQL Server instance.<\/p>\n<p>Since there is no witness needed in Windows (such as file-share witness), it is necessary to have a third solution to ensure that the cluster survives in case of a problem.<\/p>\n<p>In other words, if you are going to make a Linux SQL Server AG with External selected, you need to set up a structure with three nodes, not two,<\/p>\n<p>but of course, since the cost of having three nodes here will increase the cost, it has been resolved by providing the necessary metadata distribution and keeping the relevant data for continuity with the definition of &#8220;configuration only replica&#8221;.<\/p>\n<p>After all this theoretical information, let&#8217;s move on to a quick example.<\/p>\n<p>I have two Linux machines positioned on Microsoft Azure for the test environment. The information of the servers with Ubuntu 20.04 installed is as follows.<\/p>\n<p>sqlinuxnode1 : 10.1.0.4<\/p>\n<p>sqlinuxnode2: 10.1.0.6<\/p>\n<p>We will be performing SQL Server Linux installations together, so you can experience it in your own environments.<\/p>\n<p>We grant access to ports 1433 and 5022 on each server.<\/p>\n<p>We access servers through Putty and ensure that existing incoming packages are updated before installing new packages.<\/p>\n<pre class=\"lang:default decode:true \">sudo apt-get update\r\n\r\nsudo apt-get -y upgrade<\/pre>\n<p>I restart my servers just in case for the updates to take effect.<\/p>\n<pre class=\"lang:default decode:true \">sudo reboot\r\n<\/pre>\n<p>I add the GPG key for the system to trust the MS SQL apt repos.<\/p>\n<pre class=\"lang:default decode:true \">sudo wget -qO- https:\/\/packages.microsoft.com\/keys\/microsoft.asc | sudo apt-key add \u2013\r\n<\/pre>\n<p>I mentioned that I am using Ubuntu 20.04. I add the Microsoft SQL Server 2019 apt repository that we need for this version to the system.<\/p>\n<pre class=\"lang:default decode:true \">sudo add-apt-repository \"$(wget -qO- https:\/\/packages.microsoft.com\/config\/ubuntu\/18.04\/mssql-server-2019.list)\"<\/pre>\n<p>Let&#8217;s use the following commands to perform SQL Server installations.<\/p>\n<pre class=\"lang:default decode:true \">sudo apt update\r\n\r\nsudo apt install mssql-server<\/pre>\n<p>During the installation, you will be asked to accept the agreement. Type Y and continue with enter.<\/p>\n<figure style=\"width: 435px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.caglarozenc.com\/wp-content\/uploads\/Resim-1-%E2%80%93-Sozlesme-onayi.png\" alt=\"\" width=\"435\" height=\"276\" \/><figcaption class=\"wp-caption-text\">Picture 1 \u2013 Contract approval<\/figcaption><\/figure>\n<p>After completing the installation, you will be prompted to run the \u201csudo \/opt\/mssql\/bin\/mssql-conf setup\u201d command.<\/p>\n<figure style=\"width: 420px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.caglarozenc.com\/wp-content\/uploads\/Resim-2-%E2%80%93-Ilk-Kurulum.png\" alt=\"\" width=\"420\" height=\"315\" \/><figcaption class=\"wp-caption-text\">Picture 2 \u2013 Initial Installation<\/figcaption><\/figure>\n<p>When you run the code you need for installation, you will be asked which version of SQL Server you want to choose.<\/p>\n<p>In our example, we choose the &#8220;Developer&#8221; edition. So we continue with 2.<\/p>\n<figure style=\"width: 532px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.caglarozenc.com\/wp-content\/uploads\/Resim-3-%E2%80%93-Versiyon-secimi.png\" alt=\"\" width=\"532\" height=\"439\" \/><figcaption class=\"wp-caption-text\">Picture 3 \u2013 Version selection<\/figcaption><\/figure>\n<p>After the version selection, it asks for a license confirmation again. We skip this step too.<\/p>\n<p>As the last step for installation, it asks us for a system administrator (sa user) password.<\/p>\n<p>We create a strong password and continue.<\/p>\n<figure style=\"width: 602px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.caglarozenc.com\/wp-content\/uploads\/Resim-4-%E2%80%93-SA-Kullanicinin-sifresinin-belirlenmesi.png\" alt=\"\" width=\"602\" height=\"278\" \/><figcaption class=\"wp-caption-text\">Picture 4 \u2013 Determining the SA User&#8217;s password<\/figcaption><\/figure>\n<p>We also set the SA user&#8217;s password, and as you can see, the SQL Server service is running.<\/p>\n<p>We have successfully installed SQL Server 2019 on Linux Ubuntu 20.04. So we actually successfully provided the first step.<\/p>\n<p>Before going to other steps, I assigned local IP addresses (IP addresses I shared with you) as Fixed IP over Azure.<\/p>\n<p>While you are experiencing this issue in your own environment, you must assign local IP addresses as fixed IP.<\/p>\n<p>You can run the code below via putty to check the IP addresses.<\/p>\n<figure style=\"width: 602px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.caglarozenc.com\/wp-content\/uploads\/Resim-5-%E2%80%93-ifconfig-calismadi..png\" alt=\"\" width=\"602\" height=\"144\" \/><figcaption class=\"wp-caption-text\">Picture 5 \u2013 ifconfig did not work.<\/figcaption><\/figure>\n<p>As you can see, ifconfig is not found, it shows me how to run it. I needed to run &#8220;sudo apt install net-tools&#8221;. After running the required code, I run it again via ifconfig putty.<\/p>\n<figure style=\"width: 602px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.caglarozenc.com\/wp-content\/uploads\/Resim-6-%E2%80%93-ifconfig-calisti.png\" alt=\"\" width=\"602\" height=\"314\" \/><figcaption class=\"wp-caption-text\">Picture 6 \u2013 ifconfig worked<\/figcaption><\/figure>\n<p>Just like the SQL Server 2019 installation, I performed these ip check operations on both servers separately.<\/p>\n<p>The next step is to check the hostname of the server we are working on. Hostname information should not be longer than 15 characters.<\/p>\n<pre class=\"lang:default decode:true \">sudo cat \/etc\/hostname\r\n<\/pre>\n<p>After checking the server names, let&#8217;s update the \/etc\/hosts files so that your servers do not have problems communicating with each other.<\/p>\n<p>But for this process, we need to have root privileges first. (We are switching to root using sudo su.)<\/p>\n<pre class=\"lang:default decode:true \">\/etc\/hosts file for sqlinuxnode1; nano \/etc\/hosts or sudo nano \/etc\/hosts\r\n<\/pre>\n<figure style=\"width: 607px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.caglarozenc.com\/wp-content\/uploads\/Resim-7-sqlinuxnode1-etc-hosts-dosyasi.png\" alt=\"\" width=\"607\" height=\"235\" \/><figcaption class=\"wp-caption-text\">Picture 7 \u2013 sqlinuxnode1 etc hosts file<\/figcaption><\/figure>\n<p>The part marked in red here is my server information that I entered.<\/p>\n<p>You must enter your own server local fixed IP addresses and server hostname information so that the servers do not have problems communicating with each other.<\/p>\n<p>We open it with the nano editor, make changes and save and exit with Ctrl + X. We do the same for sqllinuxnode2.<\/p>\n<figure style=\"width: 602px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.caglarozenc.com\/wp-content\/uploads\/Resim-8-%E2%80%93-sqlinuxnode2-etc-hosts-dosyasi.png\" alt=\"\" width=\"602\" height=\"347\" \/><figcaption class=\"wp-caption-text\">Picture 8 \u2013 sqlinuxnode2 etc hosts file<\/figcaption><\/figure>\n<p>After performing the necessary operations on the host files, we ping to check if there is a problem in communication between the servers.<\/p>\n<pre class=\"lang:default decode:true \">ping sqlinuxnode2\r\n<\/pre>\n<figure style=\"width: 602px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.caglarozenc.com\/wp-content\/uploads\/Resim-9-%E2%80%93-sqllinuxnode1-den-sqllinuxnode2-ye-ping.png\" alt=\"\" width=\"602\" height=\"233\" \/><figcaption class=\"wp-caption-text\">Picture 9 \u2013 Ping from sqllinuxnode1 to sqllinuxnode2<\/figcaption><\/figure>\n<p>In Picture9, we pinged the sqlinuxnode2 server from the sqlinuxnode1 server.<\/p>\n<p>Now let&#8217;s ping the sqlinuxnode1 server from the sqlinuxnode2 server and check.<\/p>\n<figure style=\"width: 602px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.caglarozenc.com\/wp-content\/uploads\/Resim-10-sqlinuxnode2-den-sqlinuxnode1-e-ping.png\" alt=\"\" width=\"602\" height=\"214\" \/><figcaption class=\"wp-caption-text\">Picture 10 \u2013 Ping sqlinuxnode1 from sqlinuxnode2<\/figcaption><\/figure>\n<p>Both of our servers are ready, what we need to do now is to access these servers either through a server that accesses this environment or from a computer you use in the local environment and do the other steps.<\/p>\n<p>I opened ports 1433 and 5022. I just need to edit the host file on my Windows computer to access the hostnames of the servers I need to do.<\/p>\n<p>In Windows, the host file is located in C:\\Windows\\System32\\drivers\\etc and you can open it with a text editor and make changes.<\/p>\n<p>After making the adjustments, we connect with SSMS.<\/p>\n<figure style=\"width: 602px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.caglarozenc.com\/wp-content\/uploads\/Resim-11-%E2%80%93-SSMS-ile-baglanti-hatasi.png\" alt=\"\" width=\"602\" height=\"201\" \/><figcaption class=\"wp-caption-text\">Picture 11 \u2013 Connection error with SSMS<\/figcaption><\/figure>\n<p>If you are getting an error like the one above while connecting with SSMS, you should select &#8220;Trust server certificate&#8221; in the Connection Properties section of SSMS Connect To Server.<\/p>\n<figure style=\"width: 477px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.caglarozenc.com\/wp-content\/uploads\/Resim-12-%E2%80%93-Trust-server-certificate.png\" alt=\"\" width=\"477\" height=\"520\" \/><figcaption class=\"wp-caption-text\">Picture 12 \u2013 Trust server certificate<\/figcaption><\/figure>\n<p>We try to connect with SSMS again, if there is no problem, our connection will be successful as in the picture below.<\/p>\n<figure style=\"width: 602px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.caglarozenc.com\/wp-content\/uploads\/Resim-13-%E2%80%93-SSMS-baglanti-durumu.png\" alt=\"\" width=\"602\" height=\"580\" \/><figcaption class=\"wp-caption-text\">Picture 13 \u2013 SSMS connection status<\/figcaption><\/figure>\n<p>Now that there is no problem in our connection settings, let&#8217;s start configuring Always On on SQL Server Linux.<\/p>\n<p>We enable SQL Server Always On using SQL Server Configuration Manager on Windows SQL Server.<\/p>\n<p>But SQL Server Linux does not have a GUI configuration manager. We use the mssql-conf utility to enable HADR.<\/p>\n<p>We run the following command on both servers.<\/p>\n<pre class=\"lang:default decode:true \">sudo \/opt\/mssql\/bin\/mssql-conf set hadr.hadrenabled  1\r\n<\/pre>\n<figure style=\"width: 602px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.caglarozenc.com\/wp-content\/uploads\/Resim-14-%E2%80%93-HADR-aktif-etme.png\" alt=\"\" width=\"602\" height=\"93\" \/><figcaption class=\"wp-caption-text\">Picture 14 \u2013 Activating HADR<\/figcaption><\/figure>\n<p>After running the command, as you can see in the picture above, it tells us that we need to restart the SQL Server service and gives the code we need for the process.<\/p>\n<pre class=\"lang:default decode:true \">systemctl restart mssql-server.service\r\n<\/pre>\n<p>After performing the restart process, we can now continue the Always On High Availability operations via SSMS.<\/p>\n<p>In order to create an AG, we need to open the AlwaysOn_health Extended Event feature on both servers with the following code.<\/p>\n<p>You can do this through SSMS or Azure Data Studio.<\/p>\n<pre class=\"lang:default decode:true \">ALTER EVENT SESSION  AlwaysOn_health ON SERVER WITH (STARTUP_STATE=ON);\r\n<\/pre>\n<p>Now we come to the most important part of SQL Server Linux&#8217;s Always On configuration.<\/p>\n<p>Here we will create Master Key, Certificate and return the backup to the other server.<\/p>\n<p>iBecause the communication between mirroring endpoints on Linux is with a certificate.<\/p>\n<p>After the certificate process, we need to create the endpoints.<\/p>\n<p>We can create the master key and certificate by running the following codes on one of the two servers.<\/p>\n<pre class=\"lang:default decode:true \">CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'DMC@123*!';\r\n\r\nCREATE CERTIFICATE sqllinuxdb_certificate  WITH SUBJECT = 'sqllinuxdb_certificate';<\/pre>\n<p>I ran the above codes in sqlinuxnode1. Now, let&#8217;s back up the &#8220;sqllinuxdb_certificate&#8221; we created.<\/p>\n<pre class=\"lang:default decode:true \">BACKUP CERTIFICATE sqllinuxdb_sertifika    \r\nTO FILE = '\/var\/opt\/mssql\/data\/sqllinuxdb_sertifika.cer'    \r\nWITH PRIVATE KEY (\r\nFILE = '\/var\/opt\/mssql\/data\/sqllinuxdb_sertifika_pvk.pvk',\r\nENCRYPTION BY PASSWORD = 'DMC@123*!'\r\n);<\/pre>\n<p>If for some reason you want to delete the certificate you created, delete the cer and pvk files under \/var\/opt\/mssql\/data\/.<\/p>\n<p>Then \u201cDROP CERTIFICATE sqllinuxdb_certificate; Delete the certificate and the latest master key with &#8221;<\/p>\n<pre class=\"lang:default decode:true \">USE master;\r\nDROP MASTER KEY;<\/pre>\n<p>Now we have a certificate we created and we need to copy this certificate to the other server.<\/p>\n<pre class=\"lang:default decode:true \">sudo scp sqllinuxdb_*.* dmcadmin@sqlinuxnode2\/var\/opt\/mssql\/data\/\r\n<\/pre>\n<figure style=\"width: 602px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.caglarozenc.com\/wp-content\/uploads\/Resim-15-%E2%80%93-Sertifika-tasima.png\" alt=\"\" width=\"602\" height=\"102\" \/><figcaption class=\"wp-caption-text\">Picture 15 \u2013 Transferring a certificate<\/figcaption><\/figure>\n<p>As you can see in Picture 15, we successfully moved the cer and pvk files to sqllinuxnode2 to the \/tmp directory.<\/p>\n<p>After the migration, let&#8217;s give the ownership of the files to the mssql user by using the chown command. But first, let&#8217;s check with ls -ltr.<\/p>\n<figure style=\"width: 602px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.caglarozenc.com\/wp-content\/uploads\/Resim-16-%E2%80%93-ls-ltr-ile-sahiplik-kontrolu.png\" alt=\"\" width=\"602\" height=\"120\" \/><figcaption class=\"wp-caption-text\">Picture 16 \u2013 Ownership check with ls ltr<\/figcaption><\/figure>\n<p id=\"gJcMzlV\">As you can see, the files are owned by dmcadmin. Let&#8217;s move these files into the \/var\/opt\/mssql\/data folder, then let&#8217;s take ownership of them to mssql.<\/p>\n<pre class=\"lang:default decode:true \">scp sqllinuxdb_*.* \/var\/opt\/mssql\/data\r\n<\/pre>\n<p>We have done the migration. Now let&#8217;s change ownership.<\/p>\n<pre class=\"lang:default decode:true \">chown mssql sqllinuxdb_*.*\r\nchgrp mssql sqllinuxdb_*.*<\/pre>\n<figure style=\"width: 602px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.caglarozenc.com\/wp-content\/uploads\/Resim-17-%E2%80%93-ls-ltr-sahiplik-degisim-kontrolu.png\" alt=\"\" width=\"602\" height=\"135\" \/><figcaption class=\"wp-caption-text\">Picture 17 \u2013 ls ltr ownership change check<\/figcaption><\/figure>\n<p>Let&#8217;s import our backup to sqllinuxnode2 now.<\/p>\n<pre class=\"lang:default decode:true \">CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'DMC@123*!';\r\nUSE master\r\nGO\r\nOPEN MASTER KEY\r\nDECRYPTION BY PASSWORD = 'DMC@123*!'\r\nIF EXISTS (SELECT * FROM sys.certificates WHERE name = 'sqllinuxdb_certificate')\r\nDROP CERTIFICATE sqllinuxdb_certificate\r\nCREATE CERTIFICATE sqllinuxdb_certificate \r\nFROM FILE = '\/var\/opt\/mssql\/data\/sqllinuxdb_certificate.cer'\r\nWITH PRIVATE KEY\r\n(\r\nFILE = '\/var\/opt\/mssql\/data\/sqllinuxdb_certificate_pvk.pvk' ,\r\nDECRYPTION BY PASSWORD = 'DMC@123*!'\r\n)<\/pre>\n<p>Now that we&#8217;ve done the certification process, it&#8217;s time to create the Endpoints. Let&#8217;s run the code below on both servers. I gave the port information 5022, which comes by default.<\/p>\n<pre class=\"lang:default decode:true \">CREATE ENDPOINT [Hadr_endpoint]\r\nAS TCP (LISTENER_PORT = 5022)\r\nFOR DATABASE_MIRRORING (\r\nROLE = ALL,\r\nAUTHENTICATION = CERTIFICATE sqllinuxdb_certificate,\r\nENCRYPTION = REQUIRED ALGORITHM AES\r\n);\r\nALTER ENDPOINT [Hadr_endpoint] STATE = STARTED;<\/pre>\n<p>Let&#8217;s give firewall permissions on ubuntu for 5022 with the code below.<\/p>\n<pre class=\"lang:default decode:true \">sudo apt install ufw\r\nsudo ufw allow 5022<\/pre>\n<p>Now, in the remaining steps, we can perform the SQL Server AG operations, which is our classic process, in order.<\/p>\n<figure style=\"width: 406px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.caglarozenc.com\/wp-content\/uploads\/Resim-18-%E2%80%93-AG-Name-ve-Cluster-Type-secimi.png\" alt=\"\" width=\"406\" height=\"377\" \/><figcaption class=\"wp-caption-text\">Picture 18 \u2013 Selecting AG Name and Cluster Type<\/figcaption><\/figure>\n<p>In the cluster type field you see in the picture above, there is EXTERNAL along with NONE.<\/p>\n<p>I explained what these two cluster types are at the beginning of the article. That&#8217;s why I go with NONE.<\/p>\n<p>The next screen is the section where you will select the databases you want to be included in the AG.<\/p>\n<p>Here I only have a database named SQLEKIBI. I choose it and continue.<\/p>\n<figure style=\"width: 414px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.caglarozenc.com\/wp-content\/uploads\/Resim-19-%E2%80%93-AG-icin-veritabani-secimi.png\" alt=\"\" width=\"414\" height=\"384\" \/><figcaption class=\"wp-caption-text\">Picture 19 \u2013 Database selection for AR<\/figcaption><\/figure>\n<p id=\"ysVjPAa\">The next screen contains the instance information you will add for AG. Here I say \u201cAdd instance\u2026\u201d and add linuxsqlnode2.<\/p>\n<figure style=\"width: 482px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.caglarozenc.com\/wp-content\/uploads\/Resim-20-%E2%80%93-AG-icin-instance-ekleme.png\" alt=\"\" width=\"482\" height=\"346\" \/><figcaption class=\"wp-caption-text\">Picture 20 \u2013 Adding instance for AG<\/figcaption><\/figure>\n<p>As you can see in the picture above, I marked the secondary node as readable for the new instance I added.<\/p>\n<p>I switch to the Endpoints tab and revise the endpoint information according to myself.<\/p>\n<figure style=\"width: 501px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.caglarozenc.com\/wp-content\/uploads\/Resim-21-%E2%80%93-Endpoint-bilgileri.png\" alt=\"\" width=\"501\" height=\"340\" \/><figcaption class=\"wp-caption-text\">Picture 21 \u2013 Endpoint information<\/figcaption><\/figure>\n<p>I leave the other settings as default.<\/p>\n<p>The next screen shows how to sync Data. I leave this part as default.<\/p>\n<figure style=\"width: 504px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.caglarozenc.com\/wp-content\/uploads\/Resim-22-%E2%80%93-AG-icin-Data-Senkranizasyonu.png\" alt=\"\" width=\"504\" height=\"362\" \/><figcaption class=\"wp-caption-text\">Picture 22 \u2013 Data Synchronization for AG<\/figcaption><\/figure>\n<p>We come to the final steps, the next screen is the one where the verification of the definitions we made for the AG is done.<\/p>\n<p>We will see a warning as we do not define a listener on this screen, but we continue our process.<\/p>\n<p>Finally, we come to the last step and as a result of the actions we have taken, we are faced with a green screen.<\/p>\n<figure style=\"width: 403px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.caglarozenc.com\/wp-content\/uploads\/Resim-23-%E2%80%93-AG-Sonuc.png\" alt=\"\" width=\"403\" height=\"359\" \/><figcaption class=\"wp-caption-text\">Picture 23 \u2013 AG Result<\/figcaption><\/figure>\n<p>As you can see in the picture above, we have successfully defined Always On AG on SQL Server Linux.<\/p>\n<p>Finally, let&#8217;s take a look at the Always On Dashboard and end our article.<\/p>\n<figure style=\"width: 411px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.caglarozenc.com\/wp-content\/uploads\/Resim-24-%E2%80%93-AG-Dashboard.png\" alt=\"\" width=\"411\" height=\"312\" \/><figcaption class=\"wp-caption-text\">Picture 24 \u2013 AG Dashboard<\/figcaption><\/figure>\n<p>I am happy to have finished another article. In this article, I told you how you can run a SQL Server Always On Cluster on Linux, and for what purpose you can use the SQL Server Linux Always On Cluster. See you in the next content.<\/p>\n<p>&nbsp;<\/p>\n<div class=\"pvc_clear\"><\/div>\n<p id=\"pvc_stats_52989\" class=\"pvc_stats all  \" data-element-id=\"52989\" style=\"\"><i class=\"pvc-stats-icon medium\" aria-hidden=\"true\"><svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"far\" data-icon=\"chart-bar\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 512 512\" class=\"svg-inline--fa fa-chart-bar fa-w-16 fa-2x\"><path fill=\"currentColor\" d=\"M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z\" class=\"\"><\/path><\/svg><\/i> <img loading=\"lazy\" decoding=\"async\" width=\"16\" height=\"16\" alt=\"Loading\" src=\"https:\/\/dbtut.com\/wp-content\/plugins\/page-views-count\/ajax-loader-2x.gif\" border=0 \/><\/p>\n<div class=\"pvc_clear\"><\/div>\n","protected":false},"excerpt":{"rendered":"<p>SQL Server 2017 and SQL Server 2019 can run on Linux operating system, and SQL Server Always On Availability Groups can be Setup without the need for Windows Failover Cluster with SQL Server 2017. In SQL Server Always On classic usage, we need Windows Server Failover Cluster (WSFC), we can do this on Linux using &hellip;<\/p>\n<div class=\"pvc_clear\"><\/div>\n<p id=\"pvc_stats_52989\" class=\"pvc_stats all  \" data-element-id=\"52989\" style=\"\"><i class=\"pvc-stats-icon medium\" aria-hidden=\"true\"><svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"far\" data-icon=\"chart-bar\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 512 512\" class=\"svg-inline--fa fa-chart-bar fa-w-16 fa-2x\"><path fill=\"currentColor\" d=\"M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z\" class=\"\"><\/path><\/svg><\/i> <img loading=\"lazy\" decoding=\"async\" width=\"16\" height=\"16\" alt=\"Loading\" src=\"https:\/\/dbtut.com\/wp-content\/plugins\/page-views-count\/ajax-loader-2x.gif\" border=0 \/><\/p>\n<div class=\"pvc_clear\"><\/div>\n","protected":false},"author":1414,"featured_media":53016,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[299,3],"tags":[],"class_list":["post-52989","post","type-post","status-publish","format-standard","has-post-thumbnail","","category-linux","category-mssql"],"aioseo_notices":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.9 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Sql Server Always On Availability Groups Setup - Database Tutorials<\/title>\n<meta name=\"description\" content=\"SQL Server 2017 and SQL Server 2019 can run on Linux operating system, and SQL Server Always On Availability Groups can be Setup\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/dbtut.com\/index.php\/2022\/11\/08\/sql-server-always-on-availability-groups-setup\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Sql Server Always On Availability Groups Setup - Database Tutorials\" \/>\n<meta property=\"og:description\" content=\"SQL Server 2017 and SQL Server 2019 can run on Linux operating system, and SQL Server Always On Availability Groups can be Setup\" \/>\n<meta property=\"og:url\" content=\"https:\/\/dbtut.com\/index.php\/2022\/11\/08\/sql-server-always-on-availability-groups-setup\/\" \/>\n<meta property=\"og:site_name\" content=\"Database Tutorials\" \/>\n<meta property=\"article:published_time\" content=\"2022-11-08T19:36:29+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-11-08T19:37:50+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/dbtut.com\/wp-content\/uploads\/2022\/11\/Ekran-goruntusu-2022-11-08-223525.png\" \/>\n\t<meta property=\"og:image:width\" content=\"630\" \/>\n\t<meta property=\"og:image:height\" content=\"372\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"\u00c7a\u011flar \u00d6zen\u00e7\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u00c7a\u011flar \u00d6zen\u00e7\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"15 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/dbtut.com\/index.php\/2022\/11\/08\/sql-server-always-on-availability-groups-setup\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/dbtut.com\/index.php\/2022\/11\/08\/sql-server-always-on-availability-groups-setup\/\"},\"author\":{\"name\":\"\u00c7a\u011flar \u00d6zen\u00e7\",\"@id\":\"https:\/\/dbtut.com\/#\/schema\/person\/92baa6fd666fb707d903177fed07d6ab\"},\"headline\":\"Sql Server Always On Availability Groups Setup\",\"datePublished\":\"2022-11-08T19:36:29+00:00\",\"dateModified\":\"2022-11-08T19:37:50+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/dbtut.com\/index.php\/2022\/11\/08\/sql-server-always-on-availability-groups-setup\/\"},\"wordCount\":1967,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/dbtut.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/dbtut.com\/index.php\/2022\/11\/08\/sql-server-always-on-availability-groups-setup\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/dbtut.com\/wp-content\/uploads\/2022\/11\/Ekran-goruntusu-2022-11-08-223525.png\",\"articleSection\":[\"Linux\",\"MSSQL\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/dbtut.com\/index.php\/2022\/11\/08\/sql-server-always-on-availability-groups-setup\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/dbtut.com\/index.php\/2022\/11\/08\/sql-server-always-on-availability-groups-setup\/\",\"url\":\"https:\/\/dbtut.com\/index.php\/2022\/11\/08\/sql-server-always-on-availability-groups-setup\/\",\"name\":\"Sql Server Always On Availability Groups Setup - Database Tutorials\",\"isPartOf\":{\"@id\":\"https:\/\/dbtut.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/dbtut.com\/index.php\/2022\/11\/08\/sql-server-always-on-availability-groups-setup\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/dbtut.com\/index.php\/2022\/11\/08\/sql-server-always-on-availability-groups-setup\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/dbtut.com\/wp-content\/uploads\/2022\/11\/Ekran-goruntusu-2022-11-08-223525.png\",\"datePublished\":\"2022-11-08T19:36:29+00:00\",\"dateModified\":\"2022-11-08T19:37:50+00:00\",\"description\":\"SQL Server 2017 and SQL Server 2019 can run on Linux operating system, and SQL Server Always On Availability Groups can be Setup\",\"breadcrumb\":{\"@id\":\"https:\/\/dbtut.com\/index.php\/2022\/11\/08\/sql-server-always-on-availability-groups-setup\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/dbtut.com\/index.php\/2022\/11\/08\/sql-server-always-on-availability-groups-setup\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/dbtut.com\/index.php\/2022\/11\/08\/sql-server-always-on-availability-groups-setup\/#primaryimage\",\"url\":\"https:\/\/dbtut.com\/wp-content\/uploads\/2022\/11\/Ekran-goruntusu-2022-11-08-223525.png\",\"contentUrl\":\"https:\/\/dbtut.com\/wp-content\/uploads\/2022\/11\/Ekran-goruntusu-2022-11-08-223525.png\",\"width\":630,\"height\":372},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/dbtut.com\/index.php\/2022\/11\/08\/sql-server-always-on-availability-groups-setup\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/dbtut.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Sql Server Always On Availability Groups Setup\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/dbtut.com\/#website\",\"url\":\"https:\/\/dbtut.com\/\",\"name\":\"Database Tutorials\",\"description\":\"MSSQL, Oracle, PostgreSQL, MySQL, MariaDB, DB2, Sybase, Teradata, Big Data, NOSQL, MongoDB, Couchbase, Cassandra, Windows, Linux\",\"publisher\":{\"@id\":\"https:\/\/dbtut.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/dbtut.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/dbtut.com\/#organization\",\"name\":\"dbtut\",\"url\":\"https:\/\/dbtut.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/dbtut.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/dbtut.com\/wp-content\/uploads\/2021\/02\/dbtutlogo.jpg\",\"contentUrl\":\"https:\/\/dbtut.com\/wp-content\/uploads\/2021\/02\/dbtutlogo.jpg\",\"width\":223,\"height\":36,\"caption\":\"dbtut\"},\"image\":{\"@id\":\"https:\/\/dbtut.com\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/dbtut.com\/#\/schema\/person\/92baa6fd666fb707d903177fed07d6ab\",\"name\":\"\u00c7a\u011flar \u00d6zen\u00e7\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/dbtut.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/997658bc236de4f5a0f3f46e64535566e31ba96824c77c01165e863fc38fd1ba?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/997658bc236de4f5a0f3f46e64535566e31ba96824c77c01165e863fc38fd1ba?s=96&d=mm&r=g\",\"caption\":\"\u00c7a\u011flar \u00d6zen\u00e7\"},\"url\":\"https:\/\/dbtut.com\/index.php\/author\/caglarozenc\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Sql Server Always On Availability Groups Setup - Database Tutorials","description":"SQL Server 2017 and SQL Server 2019 can run on Linux operating system, and SQL Server Always On Availability Groups can be Setup","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/dbtut.com\/index.php\/2022\/11\/08\/sql-server-always-on-availability-groups-setup\/","og_locale":"en_US","og_type":"article","og_title":"Sql Server Always On Availability Groups Setup - Database Tutorials","og_description":"SQL Server 2017 and SQL Server 2019 can run on Linux operating system, and SQL Server Always On Availability Groups can be Setup","og_url":"https:\/\/dbtut.com\/index.php\/2022\/11\/08\/sql-server-always-on-availability-groups-setup\/","og_site_name":"Database Tutorials","article_published_time":"2022-11-08T19:36:29+00:00","article_modified_time":"2022-11-08T19:37:50+00:00","og_image":[{"width":630,"height":372,"url":"https:\/\/dbtut.com\/wp-content\/uploads\/2022\/11\/Ekran-goruntusu-2022-11-08-223525.png","type":"image\/png"}],"author":"\u00c7a\u011flar \u00d6zen\u00e7","twitter_card":"summary_large_image","twitter_misc":{"Written by":"\u00c7a\u011flar \u00d6zen\u00e7","Est. reading time":"15 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/dbtut.com\/index.php\/2022\/11\/08\/sql-server-always-on-availability-groups-setup\/#article","isPartOf":{"@id":"https:\/\/dbtut.com\/index.php\/2022\/11\/08\/sql-server-always-on-availability-groups-setup\/"},"author":{"name":"\u00c7a\u011flar \u00d6zen\u00e7","@id":"https:\/\/dbtut.com\/#\/schema\/person\/92baa6fd666fb707d903177fed07d6ab"},"headline":"Sql Server Always On Availability Groups Setup","datePublished":"2022-11-08T19:36:29+00:00","dateModified":"2022-11-08T19:37:50+00:00","mainEntityOfPage":{"@id":"https:\/\/dbtut.com\/index.php\/2022\/11\/08\/sql-server-always-on-availability-groups-setup\/"},"wordCount":1967,"commentCount":0,"publisher":{"@id":"https:\/\/dbtut.com\/#organization"},"image":{"@id":"https:\/\/dbtut.com\/index.php\/2022\/11\/08\/sql-server-always-on-availability-groups-setup\/#primaryimage"},"thumbnailUrl":"https:\/\/dbtut.com\/wp-content\/uploads\/2022\/11\/Ekran-goruntusu-2022-11-08-223525.png","articleSection":["Linux","MSSQL"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/dbtut.com\/index.php\/2022\/11\/08\/sql-server-always-on-availability-groups-setup\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/dbtut.com\/index.php\/2022\/11\/08\/sql-server-always-on-availability-groups-setup\/","url":"https:\/\/dbtut.com\/index.php\/2022\/11\/08\/sql-server-always-on-availability-groups-setup\/","name":"Sql Server Always On Availability Groups Setup - Database Tutorials","isPartOf":{"@id":"https:\/\/dbtut.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/dbtut.com\/index.php\/2022\/11\/08\/sql-server-always-on-availability-groups-setup\/#primaryimage"},"image":{"@id":"https:\/\/dbtut.com\/index.php\/2022\/11\/08\/sql-server-always-on-availability-groups-setup\/#primaryimage"},"thumbnailUrl":"https:\/\/dbtut.com\/wp-content\/uploads\/2022\/11\/Ekran-goruntusu-2022-11-08-223525.png","datePublished":"2022-11-08T19:36:29+00:00","dateModified":"2022-11-08T19:37:50+00:00","description":"SQL Server 2017 and SQL Server 2019 can run on Linux operating system, and SQL Server Always On Availability Groups can be Setup","breadcrumb":{"@id":"https:\/\/dbtut.com\/index.php\/2022\/11\/08\/sql-server-always-on-availability-groups-setup\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/dbtut.com\/index.php\/2022\/11\/08\/sql-server-always-on-availability-groups-setup\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/dbtut.com\/index.php\/2022\/11\/08\/sql-server-always-on-availability-groups-setup\/#primaryimage","url":"https:\/\/dbtut.com\/wp-content\/uploads\/2022\/11\/Ekran-goruntusu-2022-11-08-223525.png","contentUrl":"https:\/\/dbtut.com\/wp-content\/uploads\/2022\/11\/Ekran-goruntusu-2022-11-08-223525.png","width":630,"height":372},{"@type":"BreadcrumbList","@id":"https:\/\/dbtut.com\/index.php\/2022\/11\/08\/sql-server-always-on-availability-groups-setup\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/dbtut.com\/"},{"@type":"ListItem","position":2,"name":"Sql Server Always On Availability Groups Setup"}]},{"@type":"WebSite","@id":"https:\/\/dbtut.com\/#website","url":"https:\/\/dbtut.com\/","name":"Database Tutorials","description":"MSSQL, Oracle, PostgreSQL, MySQL, MariaDB, DB2, Sybase, Teradata, Big Data, NOSQL, MongoDB, Couchbase, Cassandra, Windows, Linux","publisher":{"@id":"https:\/\/dbtut.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/dbtut.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/dbtut.com\/#organization","name":"dbtut","url":"https:\/\/dbtut.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/dbtut.com\/#\/schema\/logo\/image\/","url":"https:\/\/dbtut.com\/wp-content\/uploads\/2021\/02\/dbtutlogo.jpg","contentUrl":"https:\/\/dbtut.com\/wp-content\/uploads\/2021\/02\/dbtutlogo.jpg","width":223,"height":36,"caption":"dbtut"},"image":{"@id":"https:\/\/dbtut.com\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/dbtut.com\/#\/schema\/person\/92baa6fd666fb707d903177fed07d6ab","name":"\u00c7a\u011flar \u00d6zen\u00e7","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/dbtut.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/997658bc236de4f5a0f3f46e64535566e31ba96824c77c01165e863fc38fd1ba?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/997658bc236de4f5a0f3f46e64535566e31ba96824c77c01165e863fc38fd1ba?s=96&d=mm&r=g","caption":"\u00c7a\u011flar \u00d6zen\u00e7"},"url":"https:\/\/dbtut.com\/index.php\/author\/caglarozenc\/"}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/dbtut.com\/index.php\/wp-json\/wp\/v2\/posts\/52989","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dbtut.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dbtut.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dbtut.com\/index.php\/wp-json\/wp\/v2\/users\/1414"}],"replies":[{"embeddable":true,"href":"https:\/\/dbtut.com\/index.php\/wp-json\/wp\/v2\/comments?post=52989"}],"version-history":[{"count":1,"href":"https:\/\/dbtut.com\/index.php\/wp-json\/wp\/v2\/posts\/52989\/revisions"}],"predecessor-version":[{"id":53018,"href":"https:\/\/dbtut.com\/index.php\/wp-json\/wp\/v2\/posts\/52989\/revisions\/53018"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/dbtut.com\/index.php\/wp-json\/wp\/v2\/media\/53016"}],"wp:attachment":[{"href":"https:\/\/dbtut.com\/index.php\/wp-json\/wp\/v2\/media?parent=52989"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dbtut.com\/index.php\/wp-json\/wp\/v2\/categories?post=52989"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dbtut.com\/index.php\/wp-json\/wp\/v2\/tags?post=52989"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}